C++-reference(&) 表示代表
使用& 表示reference可以用当前的值来表示原来的那个值, 数的地址保持不变
相较于a = b;相当于是进行赋值操作
/* & 表示引用 */ #include <iostream> using namespace std; int main(void) { int a = 10; int& b = a; //b实际代表的变量就是a cout << &a << endl; cout << &b << endl; b++; cout << a << endl; cout << b << endl; int c = 20; b = c; //表示进行赋值操作 cout << a << endl; cout << b << endl; cout << &a << endl; cout << &b << endl; cout << &c << endl; }
使用reference进行位置交换操作,这里使用地址和&进行位置交换
/* 使用reference 进行数据的交换 */ #include <iostream> using namespace std; void swap(int *p_val, int *p_val1) { *p_val ^= *p_val1; *p_val1^= *p_val; *p_val ^= *p_val1; } void swap1(int& p_val, int& p_val1) { p_val ^= p_val1; p_val1 ^= p_val; p_val ^= p_val1; //相当于对地址进行操作 } int main() { int a = 3, b = 5; swap(&a, &b); cout << "a = " << a << endl; cout << "b = " << b << endl; return 0; }
void print(const Teacher& t) //为了加快数据传入的速度
/* 使用Teacher& t 提高传参效率 */ #include <iostream> using namespace std; struct Teacher { char name[20]; int age; double salary; }; //使用& 可以加快传参的速度 void print(const Teacher& t) { cout << "这个学生的名字是" << t.name << "年龄是" << t.age << "薪水是" << t.salary << endl; } int main() { const Teacher t = {"李自成", 20, 20000}; print(t); }
int& func(void) 可以保证返回值不是一个临时的变量,是一个左值
/* 对于返回值进行reference */ #include <iostream> using namespace std; struct A { int data; int& func(void) { return data; //返回的不是一个临时变量 } }; int& foo(void) { static int num = 100; return num; //返回局部变量引用 } int main() { A a = {200}; int& r4 = a.func(); a.func() = 200; //将data左值进行赋值, 因为使用的是&引用 cout << a.data << endl; //200 cout << r4 << endl; //200 int& r5 = foo(); cout << r5 << endl; }
进行函数的各种引用
/* 引用各种类型 */ #include <iostream> using namespace std; void func(void) { cout << func << endl; } int main() { int a = 10; int *p = &a; int **pp = &p; int &r = a; int* &rp = p; //表示指针引用 int& rr = r; //普通引用 int i = 10, j = 20, k = 30; int* p_arr[3] = {&i, &j, &k}; //数组指针 int arr[3] = {i, j, k}; int (&rarr)[3] = arr; //表示引用数组 void (*p_func)(void) = func; //表示函数定义 void (&r_func)(void) = func; //表示函数引用 p_func(); r_func(); }
每天更新pyQt5内容
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?