指针:
引用:
*代表着p指向的地址的值,简单来说就是取值;&是取地址符号,取的是地址;p是指针,可以理解为所指向的值的地址,*p就是取p指针指向的地址的值,&a就是取a的地址。
区别:*p是一个值;p是一个地址;两者完全不相同。
指针与引用的区别:
指针:是保存另一个变量内存地址的变量,指针通过 * 访问保存的内存地址所指向的值;
引用:是另一个变量的别名,一旦被初始化就不能被改变,引用可以认为是一个具有自动间接性的常量指针,相当于编译器帮助实现了自动间接性取值,即:编译器帮助加上了 * 。引用内部实现为指针。
声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。故:对引用求地址,就是对目标变量求地址。
不能建立引用的引用,不能建立指向引用的指针。因为引用不是一种数据类型!!所以没有引用的引用,没有引用的指针。引用的对象应当是某种数据类型的变量
引用区别于指针的特性是:
1,不存在空引用(保证不操作空指针),
2,必须初始化(保证不是野指针),
3,一个引用永远指向他初始化的那个对象(保证指针值不变)。
https://blog.csdn.net/jiaoyang134/article/details/49046225?utm_source=copy