美文网首页
3 - 指针和引用的区别

3 - 指针和引用的区别

作者: 李伟13 | 来源:发表于2020-05-04 12:22 被阅读0次

    引用是refer to
    指针是point to
    指针和引用均为复合类型

    指针本身为一种对象
    引用就是一个对象的别名

    • 引用不可以为空,但指针可以为空。

    • 引用不可以改变指向;但是指针可以改变指向,而指向其它对象

    • 引用的大小为所指对象的大小,指针是指针本身的大小.

    • 指针占内存空间,引用不占内存空间

    https://blog.csdn.net/lyd_253261362/article/details/4323691

    ★ 相同点:
       1. 都是地址的概念;
        指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。
       ★ 区别:
       1. 指针是一个实体,而引用仅是个别名;
       2. 引用使用时无需解引用(*),指针需要解引用;
       3. 引用只能在定义时被初始化一次,之后不可变;指针可变;
       4. 引用没有 const,指针有 const,const 的指针不可变;
       5. 引用不能为空,指针可以为空;
       6. “sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;
       typeid(T) == typeid(T&) 恒为真,sizeof(T) == sizeof(T&) 恒为真,但是当引用作为成员时,其占用空间与指针相同(没找到标准的规定)。
       7. 指针和引用的自增(++)运算意义不一样;
    
    ★ 联系
    1. 引用在语言内部用指针实现(如何实现?)。
    2. 对一般应用而言,把引用理解为指针,不会犯严重语义错误。引用是操作受限了的指针(仅容许取内容操作)。
    

    <2.4.1> const的引用
    "对常量(const)的引用" 常简称为 "常量引用"(相较于指针const的两种形式)

    const int ci = 1024;
    const int &r1 = ci;
    

    常量引用可以指向变量,但是不可以通过常量引用修改变量的值.

    int i = 42;
    int &r1 = i;
    const int &r2 = i; 
    r1 = 0;
    r2 = 0;//错误
    

    <2.4.2>指针和const
    与常量引用相似


    要点是,不能通过常量引用或指针改变所指对象的值.

    我大概懂了.
    const 引用如果按照指针那样本该分为对常量的引用常量引用两个部分
    但是因为引用本身就必定指向一个对象,所以其实不存在常量引用
    .
    const 指针分为对常量的指针常量指针
    对常量的指针不能通过这个指针改变它所指向对象的值

    const int *p
    

    常量指针即不能改变这个指针指向的地址

    int *const p;
    

    在读表达式时,从右往左读。

    相关文章

      网友评论

          本文标题:3 - 指针和引用的区别

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