C++中的引用语法

发布时间:2026/7/10 4:20:56

C++中的引用语法
文章目录基本语法效果演示函数引用传参普通传参值传递引用传参地址传递、修改原变量效果展示核心机制底层本质指针与引用的比较C语言指针写法繁琐C 引用写法简洁注意易错点错误1引用不初始化错误2绑定常量错误3更改引用指向不能改嫁基本语法int a 10; int b a; // b 是 a 的引用别名定义引用必须初始化不能单独写 int b;变量名 a、b 随便起和原变量名不需要一致效果演示int a 10; int b a; b 999; // a 也会变成 999函数引用传参普通传参值传递void test(int x){ x 1024; } // 外部变量不会变原理函数内是副本修改的是复制出来的新变量和外部无关。引用传参地址传递、修改原变量void test(int x){ x 1024; } // 外部实参直接被修改效果展示#includestdio.h void test (int x){ x 1024; printf(test函数内部的x值%d \n,x); // 1 } int main (){ int x 1; printf(调用函数前x的值%d \n,x); // 1024 test(x); printf(调用函数后x的值%d \n,x); // 1 }理解main 中的 x 在内存有一块空间调用 test 时test 里的 x 只是这块空间的另一个名字操作同一个内存格子。核心机制引用是“变量的别名。如int x中的在这里是类型修饰符而不是取地址运算符。语义声明x是某个已存在整型变量的别名。此后对x的任何操作都直接等同于对原变量的操作。底层本质在汇编/机器码层面引用在底层完全是指针的实现。它们都传递地址都只占 8 字节64位系统。唯一的区别在于语法糖特征C 语言指针 int *pC 引用 int r底层实现存储变量的地址存储变量的地址完全一样初始化可以不初始化野指针风险必须初始化且绑定后不可更改解引用必须显式使用 *p 来取值/赋值编译器自动解引用直接写 r 即可能否为 NULL可以p NULL不可以能否能重新指向可以p other不可以绑定后只能指向同一个变量void swap_ref(int a, int b) { // 形参是引用 int temp a; // 直接使用 a相当于 *a但不用写 * a b; // 直接修改实参 b temp; } // 调用swap_ref(x, y); // 直接传变量不需要 取地址指针与引用的比较功能完全等价都能修改外部原变量C语言指针写法繁琐voidtest(int*x){*x1024;}// 调用必须传地址test(num);C 引用写法简洁void test(int x){ x 1024; } // 调用直接传变量 test(num);注意形参名和实参名必须一样吗结论完全不需要一致引用绑定的是内存地址不是变量名字。记忆别名只是外号外号和本名不需要相同。指针形参 *x调用 变量内部 *x 解引用引用形参x调用直接写变量内部直接用易错点错误1引用不初始化int a; // 非法错误2绑定常量int a 10; // 非法错误3更改引用指向不能改嫁a b; // 这是赋值不是更换引用指向

相关新闻

RTX 4060 Ti双卡部署实战:本地运行70B大模型的可行路径

RTX 4060 Ti双卡部署实战:本地运行70B大模型的可行路径

2026/7/10 4:10:56

1. 关于“RTX 5060 Ti 16GB”这个显卡,我们得先掰开揉碎说清楚 你点进这篇指南,大概率是因为在某处看到了“RTX 5060 Ti 16GB”这个型号,心里一热:终于有新卡能跑大模型了?16GB显存,双卡并联,是…

Mac本地跑DeepSeek V4 Flash:C+Metal定制推理引擎实战

Mac本地跑DeepSeek V4 Flash:C+Metal定制推理引擎实战

2026/7/10 4:10:56

1. 项目概述:这不是“又一个Mac跑大模型”的故事,而是本地AI推理范式的重写“苹果Mac电脑,能本地跑 DeepSeek V4 了”——这行标题在开发者社区刷屏时,我正把一台刚拆封的 Mac Studio M3 Ultra 接上显示器。不是为了看新闻&#x…

JetPack 6.2.2下Isaac ROS可信启动与Docker深度修复指南

JetPack 6.2.2下Isaac ROS可信启动与Docker深度修复指南

2026/7/10 4:10:56

1. 为什么2026年还在为Jetson AGX Orin装Isaac ROS?——这不是重复劳动,而是硬件代际跃迁的必经门槛2026年,Jetson AGX Orin早已不是新闻,但真正把它用起来、跑通Isaac ROS整套开发流的人,远比想象中少。我手头三台Ori…

【信号分解】基于金豺优化算法GJO优化特征模态FMD分解算法研究附Matlab代码

【信号分解】基于金豺优化算法GJO优化特征模态FMD分解算法研究附Matlab代码

2026/7/10 5:51:00

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

GraphRAG四大搜索策略学习

GraphRAG四大搜索策略学习

2026/7/10 5:51:00

GraphRAG 提供了四种不同的搜索策略,按照复杂程度递增的顺序,它们分别是:基础搜索(Basic Search)、本地搜索(Local Search)、全局搜索(Global Search)和漂移搜索&#xf…

FineBI 6.0 商业分析实战:3步搭建销售驾驶舱与5个关键指标监控

FineBI 6.0 商业分析实战:3步搭建销售驾驶舱与5个关键指标监控

2026/7/10 5:51:00

FineBI 6.0 商业分析实战:3步搭建销售驾驶舱与5个关键指标监控在数据驱动的商业决策时代,销售数据的实时监控与分析能力已成为企业竞争力的核心。FineBI 6.0作为新一代商业智能工具,通过其低代码可视化界面与强大的数据处理引擎,让…

程序员深度技术池:从重复劳动到自动化交付,RPA工具实战与流程自动化软件选型

程序员深度技术池:从重复劳动到自动化交付,RPA工具实战与流程自动化软件选型

2026/7/10 5:51:00

作为一个在代码里泡了十年的老程序员,我发现真正拉开效率差距的,不是你能写多复杂的算法,而是你能把多少重复劳动交给机器。这篇文章聊聊我是怎么在程序员深度技术池里筛选出真正好用的流程自动化软件,把日常琐事全部托管的。 一、…

AI 辅助需求分析:从用户故事到技术任务的拆解与估算方法

AI 辅助需求分析:从用户故事到技术任务的拆解与估算方法

2026/7/10 5:51:00

AI 辅助需求分析:从用户故事到技术任务的拆解与估算方法 一、需求分析的本质不是「把用户说的话记下来」,而是「理解用户真正想要解决的问题,并把它变成可执行的工程任务」 AI 辅助需求分析的价值,不在于替代产品经理做需求分析…

RustDesk远程控制深度实践:安全安装、无头Ubuntu自启与自建服务器

RustDesk远程控制深度实践:安全安装、无头Ubuntu自启与自建服务器

2026/7/10 5:41:00

1. 为什么2026年还要花时间学RustDesk?——一个被严重低估的远程控制“基建级”工具很多人看到“RustDesk教程”第一反应是:“不就是个TeamViewer平替吗?装上点几下不就完事了?”——这恰恰是过去三年我帮上百位中小企业IT、自由开…

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

2026/7/9 19:40:56

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

6个月转型AI工程师:实战路径与核心技能

6个月转型AI工程师:实战路径与核心技能

2026/7/9 18:28:30

1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公…

YOLOv5模型剪枝与量化实战:边缘设备部署优化

YOLOv5模型剪枝与量化实战:边缘设备部署优化

2026/7/8 14:04:34

1. 项目背景与核心价值在计算机视觉领域,YOLOv5因其出色的实时检测性能成为工业界宠儿。但当我们尝试将其部署到边缘设备(如树莓派、Jetson Nano或手机终端)时,立刻会遇到两个致命问题:模型体积庞大(原始YO…

终极原神FPS解锁器完整指南:轻松突破60帧限制

终极原神FPS解锁器完整指南:轻松突破60帧限制

2026/7/10 0:00:42

终极原神FPS解锁器完整指南:轻松突破60帧限制 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 原神FPS解锁器是一款专为《原神》玩家设计的开源工具,通过先进的Wri…

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?[特殊字符]

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?[特殊字符]

2026/7/10 0:00:42

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?🎵 【免费下载链接】YesPlayMusic 高颜值的第三方网易云播放器,支持 Windows / macOS / Linux :electron: 项目地址: https://gitcode.com/gh_mirrors/ye/YesPlayMusic…

从零实现红黑树:手写C++的set与map容器

从零实现红黑树:手写C++的set与map容器

2026/7/10 0:00:42

1. 项目概述:从STL容器到自研轮子在C的日常开发中,std::set和std::map是我们再熟悉不过的伙伴了。它们一个负责管理不重复的集合,一个负责维护键值对映射,底层都依赖一颗高效的红黑树来保证数据的有序性和操作的性能。但你是否曾想…