引用相当于变量别名,指向该变量,用取地址符 ‘&’ 加上变量名表示,例如 &a, 表示存储a变量的地址 。声明引用时必须同时初始化,不能为空,而且初始化之后不可更改。例如 int a = 0; int &b ; //错误,没有初始化 int &b = a; //正确,声明了一个引用b, 同时初始化了,也就是b是a的别名 在函数传参过程中,有两种机制,一种是传值调用, 传的是变量的值的副本,函数执行完后,变量值不变。另一种是引用调用,实际上传的是该变量的地址,函数执行完后,变量的值会发生改变。 例如:实现 a和b的数值交换函数: swap1(int a, int b) { int temp; temp = a; a = b; b = temp; }
swap1(int &a, int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main()
{
int a = 1;
int b = 2;
int c = 3;
int d = 4;
swap1(a,b);
swap2(c,d); //直接用变量名替代 引用参数
printf("a = %d, b = %d \n", a, b); printf("c = %d, d = %d \n", c, d);
return 0;
}
那么结果会是 :a = 1, b = 2 //a,b 实际未被交换
c = 4, d = 3 //c,d 被交换