第3课_指针与引用
热度🔥:161 免费课程
授课语音
C++ 中的指针与引用的区别
C++ 中,指针和引用是操作内存和变量的两种重要方式。理解两者的概念、使用场景和区别,是掌握 C++ 编程的基础。
1. 指针(Pointer)
指针是存储内存地址的一种变量。通过指针,我们可以间接访问内存中的数据。
指针的特点
- 指针是一个变量,用于存储另一个变量的内存地址。
- 可以通过运算符
*
访问指针指向的内存。 - 指针的值可以改变(可以指向不同的变量)。
- 可以动态分配内存并通过指针管理。
指针代码案例
#include <iostream>
using namespace std;
int main() {
int a = 10; // 定义一个整型变量
int* p = &a; // 定义一个指针变量并初始化为变量 a 的地址
// 输出指针的信息
cout << "变量 a 的值: " << a << endl; // 输出变量 a 的值
cout << "变量 a 的地址: " << &a << endl; // 输出变量 a 的地址
cout << "指针 p 的值: " << p << endl; // 输出指针存储的地址
cout << "指针 p 指向的值: " << *p << endl; // 解引用指针获取指向的值
// 修改通过指针访问的值
*p = 20;
cout << "修改后的变量 a 的值: " << a << endl; // 验证 a 的值被修改
return 0;
}
代码说明:
int* p = &a;
将变量a
的地址赋值给指针p
。- 使用
*p
解引用指针获取地址对应的值,并可以修改该值。
2. 引用(Reference)
引用是变量的别名。一旦引用被初始化,就不能更改引用的目标。
引用的特点
- 引用本质上是变量的另一个名字。
- 引用必须在定义时初始化,并且不能为空。
- 引用的值一旦绑定到一个变量,就不能更改绑定。
引用代码案例
#include <iostream>
using namespace std;
int main() {
int a = 10; // 定义一个整型变量
int& ref = a; // 定义一个引用 ref 指向变量 a
// 输出引用的信息
cout << "变量 a 的值: " << a << endl; // 输出变量 a 的值
cout << "引用 ref 的值: " << ref << endl; // 输出引用的值
// 修改引用的值
ref = 20;
cout << "通过引用修改后的变量 a 的值: " << a << endl; // 验证 a 的值被修改
return 0;
}
代码说明:
int& ref = a;
定义引用ref
为变量a
的别名。- 修改
ref
的值,实际上是在修改a
的值。
3. 指针与引用的区别
特性 | 指针 | 引用 |
---|---|---|
初始化 | 可以在定义后赋值或初始化为空 | 定义时必须初始化,且不能为空 |
是否可更改指向 | 可以更改指针指向的变量 | 一旦绑定变量,引用的绑定无法更改 |
是否支持运算 | 支持指针运算,如 p++ |
不支持引用运算 |
是否可以为空 | 指针可以为空(如 nullptr ) |
引用不能为空 |
用途 | 常用于动态内存分配和数组操作 | 常用于传递参数和返回值 |
4. 总结
- 指针 适合需要动态分配和管理内存的场景。
- 引用 更加安全,用于实现类似别名的效果。
- 熟练掌握两者的使用能够编写高效、安全的代码,并灵活解决问题。