通八洲科技

c++中的地址、指针和引用的区别 c++底层概念辨析【核心】

日期:2025-12-26 00:00 / 作者:尼克
地址是内存字节的编号,指针是存储地址的变量,引用是已有变量的别名;三者本质不同但均支持间接访问:地址为硬件编号(如0x7fff5fbff6ac),非C++类型;指针是真实类型(如int*),可空、可重赋值、支持算术运算;引用是绑定即固定的别名,不占内存,不可重绑、无空引用。

地址是内存中某个字节的编号,指针是存储地址的变量,引用是已有变量的别名——三者本质不同,但都服务于间接访问。

地址:内存的“门牌号”

地址是硬件层面的概念,表示内存单元的唯一编号(如 0x7fff5fbff6ac)。它不是 C++ 的数据类型,不能直接声明或赋值,只能通过取址运算符 & 获取,或由编译器/运行时系统分配。你无法定义一个叫 “address” 的变量来存地址——除非用指针或整数(如 uintptr_t)去承载它。

指针:能存地址、能改指向、能为空的“地址容器”

指针是一个真实的数据类型(如 int*),它在内存中占固定空间(通常 8 字节),内容是某个变量的地址。

引用:绑定即固定、不可重绑、必有对象的“别名”

引用(int& r = a;)不是对象,不占额外内存(通常由编译器优化为直接使用原变量地址),它是已有变量的另一个名字。

底层关键差异速查

指针是实体,引用是别名;地址是数值,指针是持有该数值的变量。