美文网首页
指针和引用

指针和引用

作者: __若只如初见 | 来源:发表于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字节;

    技术总结

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

    相关文章

      网友评论

          本文标题:指针和引用

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