c++中引用和指针有什么关系?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<强> c++中引用和指针的关系实例详解强>
1。引用在定义时必须初始化,指针没有要求
int , rNum;,//未初始化不能通过编译, * pNum; int //可以
2。一旦一个引用被初始化为指向一个对象,就不能再指向
其他对象,而指针可以在任何时候指向任何一个同类型对象
int iNum =, 10;, int iNum2 =, 20,, int 及rNum =, iNum;,=,rNum iNum2;,//不能通过
3。没有空引用,但有空指针。
int * pNum =,零,,//可以, int 及rNum =,零;//不可以
4。在运算符中含义不同:引用结果为引用类型的大小,
但指针始终是地址空间所占字节个数。
char c1 =, 1,, char *, pc =,, c1,, c1=char&, rc ; cout<& lt; sizeof (pc) & lt; & lt; sizeof (rc) & lt; & lt; endl;,//输出4,1
5。引用自加改变变量的内容,指针自加改变了指针指向
rNum + +,,//指针的内容改变, pNum + +,,//指针改变
6。有多级指针,但是没有多级引用
int ,, rNum ,,//不可以, int * * ppNum,//可以
7。引用比指针使用起来相对更安全
指针和引用的底层实现
int Num =, 10; 012213 be mov ,,,, dword ptr (Num), 0 ah int 及rNum =, Num; 012213 c5 lea ,,,, eax, (Num), 012213 c8 mov ,,,, dword ptr [rNum], eax int * pNum =, Num; 012213 cb lea ,,,, eax, (Num), 012213 ce mov ,,,, dword ptr [pNum], eax
看完上述内容,你们掌握c++中引用和指针有什么关系的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!