单片机/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. 作为函数参数:

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

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


相关推荐
可靠的仙人掌3 分钟前
SAC(Soft Actor-Critic)算法底座
开发语言·算法·php
学逆向的25 分钟前
汇编——数据存储模式
开发语言·汇编·网络安全
geovindu34 分钟前
CSharp: Prototype Pattern
开发语言·后端·设计模式·.net·原型模式·创建型模式
王老师青少年编程41 分钟前
csp信奥赛C++高频考点专项训练:【二分答案】案例2:木材加工
c++·二分答案·csp·高频考点·信奥赛·木材加工
天天进步20151 小时前
Python全栈项目--校园食堂点餐与推荐系统
开发语言·python
aaPIXa6221 小时前
C++模板元编程:编译期计算Fibonacci数列
java·开发语言·c++
eybk2 小时前
写一个可以编制pdf文件的python程序
开发语言·python·pdf
Augustzero2 小时前
`co_await` 按下暂停键之后:从零看懂 C++20 协程
c++·后端
cui_ruicheng2 小时前
Python从入门到实战(八):封装、多态与抽象类
开发语言·python
apihz2 小时前
台风实时与历史详情查询免费 API 接口完整教程
android·开发语言·tcp/ip·dubbo·台风·天气预报