1引用和指针概念上的区别
valrible和address的区别。
:
引用是一个别名,在逻辑上不是独立的,它的存在具有依附性,必须一开始就被初始化,在其引用的对象的
整个生命周期是不能改变的
2 函数参数传递
valrible和address的区别。
:
指针本质上讲就是存放变量地址的一个变量。逻辑上是独立的,他可以被改变,包括所指地址,和所指地址的
所存放的的数据的改变:
引用是一个别名,在逻辑上不是独立的,它的存在具有依附性,必须一开始就被初始化,在其引用的对象的
整个生命周期是不能改变的
2 函数参数传递
:
指针参数传递本质是值传递的方式,它传递的是地址值,值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,即在栈中开劈内存空间以及存放由主调函数放进来的实参的值,从而成为了实参的一个副本。
不会影响主调函数的实参变量的值。
:
引用传递和指针传递是不同的,虽然它们都是在被调函数栈空间上的一个局部变量,但是任何对于引用参数的处理都会通过一个间接寻址的方式操作到主调函数中的相关变量。
而对于指针传递的参数,如果改变被调函数中的指针地址,它将影响不到主调函数的相关变量。
如果想通过指针参数传递来改变主调函数中的相关变量,那就得使用指向指针的指针,或者指针引用。
:
为了进一步加深大家对指针和引用的区别,下面我从编译的角度来阐述它们之间的区别:
程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应地址。
指针变量在符号表上对应的地址值为指针变量的地址值(指针变量地址和变量地址的区别),而引用在符号表上对应的地址值为引用对象的地址值。符号表生成后就不会再改,因此指针可以改变其指向的对象(指针变量中的值可以改),而引用对象则不能修改处理.
1 C++中引用传递与指针传递区别(进一步整理)
2
指针和引用的区别 http://www.cnphp6.com/archives/59309
3
重温C++的指针和引用 http://www.time-track.cn/references-and-pointer-in-cpp.html