单片机/C/C++八股:(十七)C++ 中指针和引用的区别

上一篇 下一篇
C 中 malloc/free 和 C++ 中 new/delete 有什么区别?

C++ 中指针和引用的区别

指针(Pointer)和引用(Reference)是 C++ 中两种用于间接访问对象的机制,但它们在本质、行为和使用规则上有根本区别。

  1. 本质不同:

    • 指针:是一个变量 ,存储的是另一个变量的内存地址。

    • 引用:是某个变量的别名(alias),不是独立对象,不占用额外存储空间(编译器通常用指针实现,但语义上不是指针)。

  2. 符号不同:

    • 指针:用 *

    • 引用:用 &

  3. 初始化要求:

    • 指针:可以不初始化(但使用前必须赋值),可指向 nullptr。

    • 引用:必须在定义时初始化 ,且不能为 null,一旦绑定就不能更改。

  4. 可变性(是否可重新赋值):

    • 指针:可以改变指向(即可以指向其他对象)。

    • 引用:一旦绑定,终身不变,不能重新绑定到其他对象。

  5. 空值(null)支持:

    • 指针:可以为 nullptr(或 NULL)。

    • 引用:不能为 null,不存在"空引用"。

  6. sizeof 结果:

    • sizeof(指针):返回指针本身的大小(如 8 字节 on 64-bit)。

    • sizeof(引用):返回被引用对象的大小,因为引用就是别名。

  7. 作为函数参数:

    • 指针传参:传递的是地址的拷贝,可通过解引用修改原变量。

    • 引用传参:直接操作原变量,语法更简洁、安全(无空指针风险)。


相关推荐
心中有你02144 小时前
【路径规划】A*寻路算法最通俗易懂讲解(C语言完整实现+详细注释)
c语言·开发语言·算法
YYYing.4 小时前
【设计模式系列 (七) 】桥接模式
c++·后端·设计模式·桥接模式
言乐64 小时前
Python自动去除水印
开发语言·python·django·virtualenv·pygame
大圣编蚕4 小时前
C语言入门:基本语法汇总
c语言·开发语言
czq_26867194874 小时前
Python打卡第31天
开发语言·python
invicinble4 小时前
python 编程语言 认识维度
开发语言·数据库·python
AC赳赳老秦4 小时前
数据采集全链路审计留痕:用 OpenClaw 实现合规审计与追溯
开发语言·汇编·python·php·swift·deepseek·openclaw
czhc11400756634 小时前
退出防呆:用“总闸“收口所有退出入口,以及三个并发语法坑
开发语言·c#
高山有多高5 小时前
【Linux笔记】Linux自定义Shell
linux·c++
悠仁さん5 小时前
【C++】vector 类
开发语言·c++