C++中的引用和指针(对引用不够熟悉o(╥﹏╥)o)
C++引用vs指针
- 不存在空引用,引用必须连接到一块合法的内存。
- 一旦引用被初始化为一个对象,就不能被指向到另一个对象;指针可以在任何时候指向到另一个对象。
- 引用必须在创建时被初始化,指针可以在任何时候被初始化。
实例
#include <iostream> using namespace std; int main(){ int num1 = 2; int &refer = num1; cout << refer; return 0; }
C++把引用作为参数
#include <iostream> using namespace std; void swap(int &a,int &b){ int temp = a; a = b; b = temp; } int main(){ int num1 = 3, num2 = 5; swap( num1, num2 ); cout << "num1 : " << num1 << " num2 : " << num2; return 0; }
C++把引用作为函数返回值
#include <iostream> using namespace std; int nums[3] = {1,2,3}; int & change(int a){ int &refer = nums[a]; return refer; } int main(){ change(1) = 3; change(2) = 5; for(int i=0; i < 3; ++i) cout << nums[i] << " "; return 0; }
注:当返回一个引用时,要注意被引用的对象不能超出作用域。所以返回一个对局部变量的引用是不合法的,但是,可以返回一个对静态变量的引用。
int& func() { int q; //! return q; // 在编译时发生错误 static int x; return x; // 安全,x 在函数作用域外依然是有效的 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?