在C++的学习过程中,我们经常会遇到这样的困扰,指针和引用之间有怎样的区别和联系?在这里,我总结整理了一些指针和引用之间的区别和联系,以及引用的具体用法。
指针和引用在定义和性质上的区别
指针:我们都知道指针是一个存放地址的变量,其中它存放的地址和地址中的数据都是可以改变的(const int *const p=1 除外),是指向内存的一个存储单元
通常这样定义
int a=1;
int *p=&a;
我们定义了一个指针变量p,这个变量指向整形变量a的地址,p的值实际上是a的存储单元的地址
引用:引用其实是原变量的一个别名,就如同你叫张三,你妈会给你起一个小名叫狗蛋儿,张三和狗蛋儿其实是同一个人。在这里也一样引用和元变量实际上是一个东西。对引用操作与对变量直接操作完全一样
总结一下区别:
(1)引用是变量的一个别名,内部实现是只读指针
(2)引用只能在初始化的时候被赋值,其他的时候值不能改变,指针的值可以在任何的时候被改变
(3)引用不能为NULL,指针可以为NULL
(4)引用变量的内存单元保存的是引用的原变量的地址
(5)“sizeof 引用”=引用变量的大小,“sizeof 指针”=指针本身的大小
(6)引用可以取地址操作,返回的是被引用变量本身所在的内存单元地址
(7)引用使用在源代码级相当于普通的变量一样使用,做函数参数时,内部传递的实际是变量地址