讲师中心 微信公众号
AI工具推荐 视频效率加速

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

风辰吖_8934

风辰吖_8934

发布时间:2025-12-26 15:19:51

|

926人浏览过

|

来源于php中文网

原创

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

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

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

地址:内存的“门牌号”

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

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

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

C++ 算法竞赛自动化测试数据生成与校验框架
C++ 算法竞赛自动化测试数据生成与校验框架

根据原题生成新题面、验证器及完整测试数据,自动套用 testlib 模板,用于用户要求生成测试数据时。

下载
  • 可被初始化为 nullptr 或其他有效地址
  • 可以重新赋值,改变指向(p = &b;
  • 支持算术运算(p + 1 指向下一个同类型元素)
  • 解引用(*p)访问目标值,可能引发空指针或野指针崩溃
  • 有独立生命周期,可作为函数参数、返回值、数组元素等自由传递

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

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

立即学习C++免费学习笔记(深入)”;

  • 必须在定义时初始化,且只能绑定一次
  • 不能绑定到字面量或临时对象(除非是 const 引用)
  • 没有空引用的概念,不存在“未初始化引用”
  • 不能取引用的地址(&r 实际上是取 a 的地址)
  • 函数参数中用引用可避免拷贝,且允许修改实参(非 const 引用)

底层关键差异速查

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

  • sizeof(int&) == sizeof(int),而 sizeof(int*) 是指针大小(通常 8)
  • 引用在汇编层常被完全优化掉,指针一定对应一条内存加载指令
  • 指针可构成多级(int**),引用不能“引用引用”,但可有引用的引用(即 int& & 等价于 int&
  • const int& 可绑定临时量(如函数返回值),int* 则需显式取址,且不能指向纯右值

相关文章

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

相关专题

更多
数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2331

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

494

2025.10.31

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

402

2026.02.12

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

5684

2023.10.24

Go语言中的运算符有哪些
Go语言中的运算符有哪些

Go语言中的运算符有:1、加法运算符;2、减法运算符;3、乘法运算符;4、除法运算符;5、取余运算符;6、比较运算符;7、位运算符;8、按位与运算符;9、按位或运算符;10、按位异或运算符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2304

2024.02.23

php三元运算符用法
php三元运算符用法

本专题整合了php三元运算符相关教程,阅读专题下面的文章了解更多详细内容。

1572

2025.10.17

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

1898

2023.09.20

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

5059

2023.08.02

Vibeknow在线使用入口合集
Vibeknow在线使用入口合集

本专题汇总了Vibeknow在线创作视频的官方入口及网页版使用教程,涵盖PPT、PDF、Word等文档一键转讲解视频的核心操作,并整理了免费版水印规则与手机端浏览器访问指南,助你快速将知识内容视频化。

0

2026.09.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn