在c++的学习中,我们经常被应该如何使用指针和引用这个问题所困扰,那么我这里给大家说一下在我的学习过程中对指针和引用的理解,和它们之间的区别,希望各位朋友给出不同的意见并且指出我在学习中的一些错误
首先我们来聊一下指针,相信我们在C的学习中就会遇到这个在C编程中无处不在的朋友。
指针本来就是用来存放地址的一个变量,其中他存放的地址和存放地址中的数据都可以被更改除非你这样(const int * const p = 12) 首先我们定义指针时通常是:
int * p = 12;
可以知道p是一个指针变量,里边存储的是数值12所在内存单元的地址,*的含义即是用于执行间接访问的一个单目运算符,他可以去访问p中的地址从而得到12这个值。
指针传递是一种值传递的方式,他传递出去的只是地址值,值传递的时候中我们可以知道被调函数的形参会被当做一个局部变量来出来,会在栈中去给其分配空间用 来存储主调函数传输过来的值,该值只不过是主调函数中实参值的一个拷贝,所以在被调函数中去修改传输过来的值并不会去影响主调函数中的实参值。
现在我们来总结一下
相同点
他们都是和地址有关系的,我们可以看到指针指向一块内存,而引用是一块内存的别名;
不同点
1指针是一个实体他在栈中有自己使用的空间,但是引用没有;
2引用必须初始化,指针不用但是最好初始化
3指针使用时必须加*,引用不用;
4引用只能初始化一次是个专一的人,指针不是;
5引用不用const去修饰,但是指针可以
6指针和地址运用自增(++)不同,引用是值进行自增,而指针是地址进行自增;
联系
1引用的内部使用指针实现的(如何实现这里不做解释)
2引用是受了限制的指针