引用与指针的区别

1.引用访问的时候一般为直接访问,指针通过得到不同的地址来间接访问不同的变量,*是解析地址的作用

2.引用因为不分配自己的内存空间,因此可以通俗理解为给变量起别名,

当&出现在等号左边时,是引用一个变量,它的地址和值与引用的变量相同,进行赋值操作时,等同于改变引用的变量的地址和值

当&出现在等号右边时,是取一个变量的地址(指针变量的地址中存放的为指针的地址,而值中则存放的时指针所指向的地址,通过*来解析这个地址来指向变量)赋值给指针的值

注:*x指向的指针x中的值即变量的地址,因此若向修改指针的地址,则需要用到:**、*&

用内存中的存储形式更直观的理解

引用与指针的区别

3.引用一经初始化,不能再引用新的变量,指针在生命周期内可以指向不同的变量

4.值传递,引用传递,指针传递

值传递:值传递中,因为形参无法影响到实参的改变,因此当实参初始化形参的时候(即形参给变量初始化,实参依旧可以给变量进行初始化)要分配新的空间,将实参拷贝到形参中去

引用传递:引用传递中,形参可以影响到实参的改变,形参若已经给变量初始化,则实参无法再给变量进行初始化操作

指针传递:实际上与值传递类似,通过地址的传递来解析新的地址从而指向新的变量,因此当实参初始化形参的时候与值传递相似,只是在分配空间不同而已,在32位系统中分配4个字节的空间,64位系统中分配8个字节的空间