目录

C学习笔记十五引用

C++学习笔记(十五)——引用

一、 引用

作用: 引用(Reference) 是 C++ 中的一种 变量别名机制,它允许一个变量拥有多个名称。 引用提供了一种安全、简洁的方式来访问变量,而无需使用指针。 特点:

  • 引用本质上是变量的别名 ,必须在定义时初始化。
  • 引用和原变量共享同一内存地址 ,对引用的修改直接作用于原变量。
  • 不能更改引用的绑定对象 ,引用一旦绑定,就不能重新指向其他变量。

二、 引用的基本语法

语法: 数据类型 &引用名 = 原变量; 示例——引用的基本使用: #include using namespace std; int main() { int a = 10; int& ref = a; // ref 是 a 的引用(别名) cout « “a = " « a « “, ref = " « ref « endl; ref = 20; // 修改 ref,相当于修改 a cout « “修改后: a = " « a « “, ref = " « ref « endl; system(“pause”); return 0; } 注意:

  • ref a 的别名,它和 a 共享同一块内存
  • 修改 ref 等同于修改a

三、 引用 vs 指针

对比项引用(Reference)指针(Pointer)
是否可为空
是否可更改绑定
访问方式直接使用需要 * 解引用
是否必须初始化
适用场景语法简洁,适用于函数参数传递需要动态分配内存、链表等场景
示例——引用 vs 指针:
#include
using namespace std;
int main() {
int a = 10;
int& ref = a; // 引用,必须初始化,不能更改绑定
int* ptr = &a // 指针,可以为空,可以更改指向
ref = 20; // 修改引用,a 变成 20
*ptr = 30; // 修改指针指向的值,a 变成 30
ptr = nullptr; // 正确 允许
// ref = nullptr; // 错误 不允许
system(“pause”);
return 0;
}

四、 引用的应用

(1) 作为函数参数

作用: 引用作为函数参数,可以避免拷贝,提高性能。 示例——传统的值传递(拷贝): #include using namespace std; void modify(int x) // 传值,修改 x 不影响原变量 { x = 100; } int main() { int a = 10; modify(a); cout « “a = " « a « endl; // a 仍然是 10 system(“pause”); return 0; } 示例——引用传递(避免拷贝,提高性能): #include using namespace std; void modify(int& x) // 传引用,修改 x 会影响原变量 { x = 100; } int main() { int a = 10; modify(a); cout « “a = " « a « endl; // a 变成 100 system(“pause”); return 0; } 注意:

  • 值传递时,函数参数是变量的副本 ,不会影响原值。
  • 引用传递时,函数参数是变量的别名 ,修改它会影响原值。

(2) 作为返回值

作用: 引用可以作为函数的返回值 ,用于返回某个变量的引用。 示例 ——引用作为返回值: #include using namespace std; int& getRef(int& x) { return x; // 返回变量的引用 } int main() { int a = 10; int& ref = getRef(a); // ref 绑定到 a ref = 20; // 修改 ref,相当于修改 a cout « “a = " « a « endl; // 输出 20 system(“pause”); return 0; } 注意:

  • 不要返回局部变量的引用,否则指向的内存会被释放,导致未定义行为

(3) 引用与 const(防止修改数据)

作用: const 引用可以防止误修改变量 ,常用于函数参数示例 ——const 引用: #include using namespace std; void print(const int& x) // 传引用,但不允许修改 { // x = 20; // 错误,不能修改 x cout « x « endl; } int main() { int a = 10; print(a); system(“pause”); return 0; } 注意: const 引用的作用:

  • 防止修改原数据 ,保证安全性。
  • 允许传递临时变量 ,而普通引用不允许。

(4) 引用与 STL(标准库)

作用: C++ STL 广泛使用引用 ,如 for-each 遍历容器。 示例 ——引用遍历vector: #include using namespace std; #include int main() { vector nums = { 1, 2, 3, 4, 5 }; for (int& n : nums) // 使用引用遍历 { n *= 2; // 直接修改 vector } for (int n : nums) { cout « n « " “; // 输出 2 4 6 8 10 } cout « endl; system(“pause”); return 0; }