深入浅出的分析引用有的来龙去脉,进而深入汇编语言探索引用的本质
目录
1、变量名的回顾
变量是一段连续存储空间的别名
程序中通过变量来申请并命名存储空间
通过变量的名字可以使用存储空间
问题:一段连续的存储空间只能有一个别名吗?
2、引用的本质
1、C++中做了一个升级,于是引用就出来了。引用可以看作一个已经定义的变量的别名,系统不会给其分配内存空间
// 引用的语法
Type& name = var
eg:
int a = 4 ;
int& b = a ; // b为a的别名 引用定义的时候必须进行初始化 类型必须一致
b = 5 ; // 操作b就是操作a
注:引用在定义的时候必须用同类型的变量(C++为强类型的语言)进行初始化(因为他是一个别名,是谁的别名要指定)
2、引用是一个已经定义的变量的别名,在使用的感受上看,是一个已经存在的存储空间的别名;变量的别名也就是变量的另一个表现形式,通过别名依旧可以操作变量本身。这在某种意义上类似于指针,eg:我们常用的交换函数,见下:
两者的运行结果明显是相同的
3、注:在上例,引用作为函数的形参时,不需要进行初始化,他的初始化发生在函数调用的时候
4、一个引用被声明,则该引用名就只能作为目标变量名的一个别名来使用,所以不能再把该引用名作为其他变量名的别名,任何对该引用的贼值就是对该引用对应的目标变量名的赋值。
5、对引用求地址就是对目标变量求地址。
从输出的结果可以看出,a和b虽然值相同, 但存储地址不同, ba为a的引用, 和a具有同样的值和存储地址
对该引用的贼值就是对该引用对应的目标变量名的赋值。
3、特殊的引用 - const引用
语法:(只有一种)