当函数的形参为指针时:
形参只是获得了实参的地址值,当你改变形参的指向时,实参的指向并不改变
。
当函数的形参为指针引用时:
形参不仅仅获得了实参的地址值,还和实参地址绑定,改变形参的指向就能改变实参的指向
。
示意图如下:
测试代码:
#include <iostream>
using namespace std;
void ChangeAddr(int *addr)
{
cout << "指针传参修改cur的:" << endl;
cout << "修改前addr指向的地址:" << addr << endl;
addr = new int(10);
cout << "修改后addr指向的地址:" << addr << endl;
}
void ChangeAddrRef(int*& addr)
{
cout << "指针引用传参修改cur的:" << endl;
cout << "修改前addr指向的地址:" << addr << endl;
addr = new int(10);
cout << "修改后addr指向的地址:" << addr << endl;
}
int main()
{
int *cur = new int(1);
cout << "cur指向的原始地址:" << cur << endl;
cout << "----------------------" << endl;
ChangeAddr(cur);
cout << "调用传指针修改后cur指向的地址:" << cur << endl;
cout << "----------------------" << endl;
ChangeAddrRef(cur);
cout << "调用传指针引用修改后后cur指向的地址:" << cur << endl;
system("pause");
return 0;
}
结果:
从实测结果可以很好的印证之前的结论。
总结:引用就是相同于取别名,本质还是不变
。比如你的同学朋友叫你的全名,但是你的家人会叫你的小名,但是都是你自己。
本人水平有限,欢迎各位码友批评指正。