C++入门之“引用”
C入门之“引用”详解在C中引用Reference是一个非常基础且重要的概念。它既简化了代码编写又在某些场景下替代了指针的功能。本文将从多个角度带你全面理解C中的引用。1. 什么是引用引用可以理解为给一个已存在的变量起一个别名。它不会占用新的内存空间而是和原变量共享同一块内存。示例代码cpp#includeiostream using namespace std; int main() { int a 10; int b a; // b是a的引用 cout a endl; // 输出a的地址 cout b endl; // 输出b的地址与a相同 b; cout a endl; // 输出11 cout b endl; // 输出11 return 0; }输出结果a和b的地址相同说明它们是同一个内存空间的不同名字。2. 引用的基本特性引用必须在定义时初始化不能先定义后赋值。引用一旦绑定就不能再改变指向。一个变量可以有多个引用。引用本质上是一个指针常量但使用起来更安全、更简洁。示例cppint a 10; int b a; int c a; // 多个引用 int d b; // 引用也可以引用其他引用 int x 20; c x; // 这不是让c指向x而是将x的值赋给ac引用的是a3. 引用作为函数参数引用最常用的场景之一就是作为函数参数可以实现✅ 修改实参的值cppvoid swap(int p1, int p2) { int tmp p1; p1 p2; p2 tmp; } int main() { int x 1, y 2; swap(x, y); // 不需要传地址 cout x y; // 输出 2 1 return 0; }✅ 减少拷贝提高效率当传递大型结构体或对象时使用引用可以避免拷贝开销cppstruct A { int arr[1000]; int b; }; void func(A aa) { // 直接操作aa无需拷贝 }4. 引用作为指针的别名引用不仅可以给普通变量起别名还可以给指针变量起别名简化二级指针操作。示例交换两个指针的指向cppvoid swap(int* p1, int* p2) { int* tmp p1; p1 p2; p2 tmp; } int main() { int x 1, y 2; int* px x, * py y; swap(px, py); // 直接传指针变量引用会自动处理 cout *px *py; // 输出 2 1 return 0; }这种写法比二级指针更直观、更安全。5. 引用作为返回值引用也可以作为函数的返回值但必须注意返回的对象的生命周期。❌ 错误示例返回局部变量的引用cppint func() { int ret 10; return ret; // ret是局部变量函数结束即销毁 } int main() { int ref func(); // 引用了一个已经销毁的对象 cout ref; // 未定义行为 return 0; }这种写法相当于返回了一个悬空引用非常危险。✅ 正确用法返回全局变量或静态变量的引用cppint func() { static int ret 10; return ret; }6. 引用 vs 指针特性引用指针是否占用内存否语法层面是是否可为空不可为空可以为nullptr是否可重新指向不可可是否需要解引用不需要需要是否安全较高较低需谨慎7. 总结C中的引用是一种高效、安全、简洁的语法工具常用于函数参数传递修改实参、减少拷贝给指针变量取别名作为返回值需注意生命周期掌握引用是写好C代码的基础之一也是理解后续内容如移动语义、智能指针等的前提。

相关新闻

Gemma-3-270m效果对比:相同硬件下Gemma-3-270m与Qwen2.5-0.5B推理速度

Gemma-3-270m效果对比:相同硬件下Gemma-3-270m与Qwen2.5-0.5B推理速度

Gemma-3-270m效果对比:相同硬件下Gemma-3-270m与Qwen2.5-0.5B推理速度 1. 测试背景与目的 在当今AI模型快速发展的时代,如何在有限的硬件资源下获得最佳的推理性能,是很多开发者和研究者关注的重点。今天我们将对比两个轻量级模型&#xff…

2026/7/2 22:34:23 阅读更多 →
【2025最新】基于SpringBoot+Vue的饮食分享平台管理系统源码+MyBatis+MySQL

【2025最新】基于SpringBoot+Vue的饮食分享平台管理系统源码+MyBatis+MySQL

💡实话实说:CSDN上做毕设辅导的都是专业技术服务,大家都要生活,这个很正常。我和其他人不同的是,我有自己的项目库存,不需要找别人拿货再加价。我就是个在校研究生,兼职赚点饭钱贴补生活费&…

2026/7/4 18:44:28 阅读更多 →
BUUCTF--xor

BUUCTF--xor

这是一道关于异或运算(xor)的题拿到这道题我直接用IDA打开了,没有进行查壳什么的,基础题嘛,应该没有打开直接找到主函数,按F5反编译,以下是这道题的核心内容int __fastcall main(int argc, cons…

2026/7/5 10:43:33 阅读更多 →

最新新闻

DC-DC降压转换器设计与PID控制优化实践

DC-DC降压转换器设计与PID控制优化实践

1. 项目背景与核心器件选型解析在电力电子领域,DC-DC降压转换器(Buck Converter)是最基础也最关键的拓扑结构之一。这次我们要实现的方案采用了171010550电源管理IC与PIC18F97J60微控制器的组合,这个搭配在工业控制领域颇具代表性…

2026/7/5 23:25:05 阅读更多 →
AutoUnipus:U校园全自动答题工具终极指南

AutoUnipus:U校园全自动答题工具终极指南

AutoUnipus:U校园全自动答题工具终极指南 【免费下载链接】AutoUnipus U校园脚本,支持全自动答题,百分百正确 2024最新版 项目地址: https://gitcode.com/gh_mirrors/au/AutoUnipus 面对繁重的在线学习任务,你是否还在为U校园平台的网课作业而烦恼…

2026/7/5 23:23:04 阅读更多 →
XXE漏洞深度解析:从XML外部实体注入原理到实战防御

XXE漏洞深度解析:从XML外部实体注入原理到实战防御

1. 项目概述:为什么XXE漏洞至今仍是“隐形杀手”?在Web安全领域,SQL注入、XSS这些名词大家耳熟能详,但提到XXE(XML External Entity Injection,XML外部实体注入),很多开发者甚至安全…

2026/7/5 23:19:03 阅读更多 →
开源小模型如何重构AI商业逻辑:7B参数的确定性价值

开源小模型如何重构AI商业逻辑:7B参数的确定性价值

1. 一家没做消费级产品的AI公司,凭什么拿到6.4亿美元? 你可能刚刷到这条新闻:“估值64亿美元!Mistral AI官宣6.4亿美元B轮融资”——第一反应是:又一家大模型创业公司爆了?但稍一查就会发现,它既…

2026/7/5 23:17:02 阅读更多 →
CATANet:基于内容感知Token聚合的图像超分辨率技术解析

CATANet:基于内容感知Token聚合的图像超分辨率技术解析

1. 从传统超分辨率到CATANet的技术演进图像超分辨率(Super-Resolution, SR)技术在过去十年经历了三次重大技术迭代。最早期的SRCNN开创了深度学习在超分辨率领域的应用,采用简单的三层卷积网络结构。2017年EDSR和RCAN引入残差学习和通道注意力…

2026/7/5 23:17:02 阅读更多 →
Linux命令-reject(拒绝打印任务)

Linux命令-reject(拒绝打印任务)

Linux命令-reject(拒绝打印任务)命令语法常用选项场景化实例1. 拒绝指定打印机2. 带原因说明拒绝3. 批量拒绝多个打印机4. 打印机故障自动处理5. 恢复打印机接受任务6. 通过 CUPS Web 接口管理7. 配合系统监控脚本查询打印队列状态最佳实践快速参考&…

2026/7/5 23:15:02 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻