C语言 百分网手机站

C++ 中引用和指针的关系

时间:2020-09-30 08:02:59 C语言 我要投稿

C++ 中引用和指针的关系

  C语言传递参数均是以值传递,另外也可以传递指针。下面是小编分享的C++ 中引用和指针的关系,一起来看一下吧。

  1.引用在定义时必须初始化,指针没有要求

  int &rNum; //未初始化不能通过编译

  int *pNum; //可以

  2. 一旦一个引用被初始化为指向一个对象,就不能再指向

  其他对象,而指针可以在任何时候指向任何一个同类型对象

  int iNum = 10;

  int iNum2 = 20;

  int &rNum = iNum;

  &rNum = iNum2; //不能通过

  3. 没有NULL引用,但有NULL指针。

  int *pNum = NULL; //可以

  int &rNum = NULL;//不可以

  4. 在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是地址空间所占字节个数。

  char c1 = 1;

  char* pc = &c1;

  char& rc = c1;

  cout<<sizeof(pc)<<sizeof(rc)<<endl; //输出4 1

  5. 引用自加改变变量的'内容,指针自加改变了指针指向

  rNum++; //指针的内容改变

  pNum++; //指针改变

  6. 有多级指针,但是没有多级引用

  int &&rNum ; //不可以

  int **ppNum; //可以

  7.引用比指针使用起来相对更安全

  指针和引用的底层实现

  int Num = 10;

  012213BE mov     dword ptr [Num],0Ah

  int &rNum = Num;

  012213C5 lea     eax,[Num]

  012213C8 mov     dword ptr [rNum],eax

  int *pNum =&Num;

  012213CB lea     eax,[Num]

  012213CE mov     dword ptr [pNum],eax

  底层的实现方式相同,都是按照指针的方式来实现的


【C++ 中引用和指针的关系】相关文章:

C++ this指针详解11-26

C++返回对象和返回引用11-01

C++函数指针学习教程12-04

c++ const引用与非const引用10-06

Java中对象和引用的具体区别10-05

C++ 中const和复合类型10-06

C语言指针函数和函数指针详解06-10

c语言指针运用中堆和栈的区别10-07

C语言和C++之间的关系10-27