声明
&符号在C语言和C++语言中都可用来表示变量的地址,而在C++中&符号还可以用来声明引用变量。
格式为 类型名+&+引用变量名 = 变量名(必须是变量名,因为引用变量就是其他变量的他称)。
#include<iostream>
using namespace std;
int main()
{
int a = 1;
int & b = a;
cout <<"a = "<< a<< ", b = " << b << endl;
cout <<"&a = "<< &a << ", &b = " << &b<<endl;
}
此刻的&是类型标识符的一部分,就像int *表示指向int类型的指针一样,这里int &表示指向int类型的引用。上述代码完成后可以看到a和b不仅值相同,而且连地址都相同。所以它们指向相同的值和内存单元。
特别要提一点的就是引用类型的变量必须在初始的时候对它进行初始化。
#include <iostream>
using namespace std;
int main()
{
int a = 1;
int &b;
b = a;
}
上述代码是不合法的,编译的时候会报出这个错误 [Error] 'b' declared as reference but not initialized ,意思是声明为引用,但没有初始化。
修改
引用变量的修改,如果改变其中的一个值,则另外一个会联动一起改变,
#include<iostream>
using namespace std;
void show(int &a, int &b);
int main()
{
int a = 1;
int & b = a;
show(a,b);
cout <<"&a = "<< &a << ", &b = " << &b<<endl;
b = 4;
show(a,b);
}
void show(int &a, int &b)
{
cout <<"a = "<< a<< ", b = " << b << endl;
}