#include <iostream>
using namespace std;
int hls(int& a1, int& a2, int& b1, int& b2) //定义行列式函数
{
int temp;
temp=a1*b2-a2*b1;
return temp;
}
int main()
{
int x1=11; int x2=9;
int y1=15; int y2=14; //定义矩阵
int result; //行列式运算结果
result=hls(x1,x2,y1,y2); //result=hls(11,9,15,14)会报错
cout << result << endl;
return 0;
}
2642passing-parameters-by-references
举个例子,有这么一个结构体:
可以看出,引用和实参的使用方式很像,但注意以下几点:
引用和指针也很像,它们都不会创建副本,因此效率都很高。它们的主要区别在于:
PS: 在代码中加上 const 关键字的目的,是不希望 func2 和 func3 去修改原始数据,因为函数仅仅是为了打印出 name。
2641passing-parameters-by-references
以引用作为参数的函数,可以把变量传入,但不能传入常量。
2640cpp-pointers-vs-arrays
经过实验确实如此我在教程中的实例里发现, ptr=var; 这句话改为 ptr=&var[0]; 也可以,经过实验确实如此。
2639cpp-pointer-arithmetic
感觉楼上的几位说的有点矛,我直接跑了一下看结果(建议直接看结论):
结果如下:
可以看到:
结论:bpink(3楼)说的是对的。
2638cpp-pointer-arithmetic
对楼上的 & 进行补充说明,& 并不是不能用在数组名上,只是用在数组名和数组名[i]有所区别。例如:
上面 &height[0] 就是取得是数组第一个元素的地址,假设地址为 1000;&height 是直接对数组名进行取地址,这个时候就是取得是 height 整个数组的地址,指向包含 10 个元素的 int 型数组,地址范围为 1000~1036;
我们知道 height 等价于 &height[0],height+1 会将地址加 4 个字节;但 &height+1 就是将地址增加 10*4 个字节。