美文网首页
指针和引用

指针和引用

作者: __若只如初见 | 来源:发表于2020-07-18 18:23 被阅读0次

注:参考自bilibili系列视频,指针和引用视频https://www.bilibili.com/video/BV1kT4y177WE

指针

指针是在内存中的四字节存储空间,指针存储的内容就是一个地址,根据这个地址可以找到另外一片内存,指针就是这片内存的索引。简单的讲,指针就是一种保存变量地址的变量。

引用

在编译器层面上,引用就是指针,因为把代码反汇编之后,指针和引用生成的汇编代码是一模一样的。指针和引用是在语法层面上的概念。

指针和引用在语法层面上的区别

初始化时的区别

指针可以不初始化,即野指针。
引用不可以不初始化,会报错,更安全。

再次赋值时的区别

第二次赋值a时,指针会指向a,而引用还是指向第一个地址,且给第一个地址赋值为a。
指针再次赋值是改变的指针指向,即改变了指针存的地址值,不会对地址中的内容做改变。
引用始终指向第一个地址,再次赋值不会改变指针指向,把其指向的地址内容改为所赋的值。
代码层面(引用):

int a = 3;
int &p = a;
p = 4;   //这里相当于 a=4
++操作

指针++操作,是根据指针存的数据类型对地址的偏移。
引用++操作,是对地址中内容++操作,如果存int值,就是对int值+1。

sizeof()

对指针sizeof(),在大部分机器上,结果都是4字节。
对于引用 sizeof(),是该引用类型的长度,如果该引用是类类型,类中有2个int,那么sizeof()为2*4=8字节;

技术总结

引用是指针的限制版本,让引用更安全。指针可以是野指针,引用不能。平时编程时,建议在能使用引用的情况下,就不要轻易使用指针,当然,在操作数组或者大面积内存时,用指针更好。

相关文章

  • 指针和引用

    指针和引用的区别: 主要是两点: 引用使用时必须非空即必须初始化为非空值,指针则初始化时可以为空; 引用初始化后不...

  • 指针和引用

    指针和引用 1. 引用和指针有什么区别? 引用是 C++ 中新增的变量类型,是对 C 的一个扩充。引用给变量起一个...

  • 引用和指针

    引用和指针 引用(左值引用) 引用为对象起了另外一个名字,引用必须初始化,引用会和被引用对象的值绑到一起(而不是拷...

  • 指针和引用

    本文来源于http://stackoverflow.com/questions/57483/what-are-th...

  • 指针和引用

    本质:引用是别名,指针是地址,具体的: 从现象上看,指针在运行时可改变其所指向的值 (所以要判断是否为空),而引用...

  • 指针和引用

    注:参考自bilibili系列视频,指针和引用视频https://www.bilibili.com/video/B...

  • 指针和引用

    为什么对象不相等? 在声明 obj1 = { name: 'haolucky' } 时,实际上是在堆内存中创建一个...

  • 指针和引用

    这里说一说指针和引用的区别。 是否可修改:指针可以更改指向的对象,而引用从一而终,不可修改。 合法性:指针使用前必...

  • 3 - 指针和引用的区别

    引用是refer to指针是point to指针和引用均为复合类型 指针本身为一种对象引用就是一个对象的别名 引用...

  • C++基础

    C++ 值传递、指针传递、引用传递详解C++中引用传递与指针传递区别 引用传递和指针传递的区别 引用的规则:(1)...

网友评论

      本文标题:指针和引用

      本文链接:https://www.haomeiwen.com/subject/nacaqktx.html