再一次系统的学习一下C语言,看到“引用”这个名字的时候,我都已经想不起这是什么意思了,复合类型中有引用这个概念吗?往后面看,才知道自己太水了,连“&”的标准名字叫什么都不知道。
所谓引用(reference)即为对象另外起了个名字。通过将声明符写成&a的形式来定义引用类型,其中d是声明的变量名。例:
int a = 2015;
int &a_a = a ; //a_a即a 的另一个名字
int &b_b ; //错误,引用类型必须初始化。
在定义引用时,程序会把引用和它的初始值绑定在一起,而不是把a的值拷贝给a_a;一旦引用初始化完成,引用将和它的初始值对象一直绑定在一起,直至死亡~~~。实际上,在程序运行的过程中,引用类型的变量是无法绑定到另一个对象的。
在定义了引用之后,对引用的所有操作都是在与之绑定的对象上进行的。例:
a_a = 2016; //把2016赋值给a_a绑定的对象,即a,故此时a = 2016;
int c = a_a; //执行结果与 int c = a;一样
引用本身不是一个对象,故不能定义引用的引用。即 int &&c_c = a_a;这种写法是错误额。
另外有个要注意的地方,引用类型的初始化必须是一个类型相符的对象。例:
int &i = 10;//错误,引用类型的初始化必须是个对象。
int i = 10;
float &i_i = i;//错误,类型不符