指针和引用的区别:
- 指针是一个实体,是一个指向地址的值,引用只是一个别名;
- 指针在使用的时候需要解引用(*),引用不需要;
- 指针的值是可变的,引用的值一定要在初始化的时候被指定且不可变;
- 指针可以用const修饰,引用不行;
- 指针可以为空,引用不可以为空;
- sizeof指针得到的是指针的大小,sizeof引用得到的是引用指向的变量的大小;
- 指针++是指地址+1,引用++是引用指向的变量+1;
- 不存在指向空值的引用意味着使用引用的代码效率比使用指针高,因为在使用引用之前不需要测试它的合法性;
- 当重载某个操作符的时候,比如[],应该使用引用。
推荐参考文献:《c++引用与指针的区别(着重理解)》
C++中可以分为值传递、指针传递、引用传递
下面详细解释一下什么叫做引用传递:
形参相当于实参的别名,在引用传递过程中,被调函数的形参虽然也作为局部变量在栈中开辟了内存空间,但是这是存放的是主调函数放进来的实参的地址,即通过栈中存放的地址访问主调函数中的实参变量。所以,被调函数对形参做的任何操作都影响了主调函数中的实参变量。