c++中引用和指针有什么关系

  

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++中引用和指针有什么关系的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

c++中引用和指针有什么关系