第一节 · 无中生有 · 初识动态内存

在 C++ 中,直接操作内存是一种强大而危险的能力。指针引用是实现这种操作的两种主要方式。


什么是指针

指针是存储内存地址的变量。就像门牌号指向具体的房子一样,指针"指向"内存中的某个位置。

int n = 42;
int* p = &n;  // p 存储 n 的地址

cout << n << endl;   // 42 - n 的值
cout << &n << endl;  // 0x7fff... - n 的地址
cout << p << endl;   // 0x7fff... - p 的值(即 n 的地址)
cout << *p << endl;  // 42 - p 指向的值

指针运算符

运算符
含义

&

取地址运算符

*

解引用运算符

int x = 10;
int* ptr = &x;   // ptr 指向 x

*ptr = 20;       // 通过指针修改 x 的值
cout << x << endl;  // 20

空指针


指针与数组

数组名本身就是指向第一个元素的指针。


什么是引用

引用是变量的别名。一旦绑定,就永远指向同一个对象。


引用 vs 指针

特性
引用
指针

初始化

必须在声明时初始化

可以稍后赋值

空值

不能为空

可以为 nullptr

重新绑定

不能重新绑定

可以指向其他对象

语法

使用简单,无需解引用

需要 * 和 &


函数参数传递


const 与指针

记忆方法:const 在 左边,值不可变;const 在 右边,指针不可变。


const 引用


指针的指针


习题

  • 编写一个函数,交换两个整数的值,分别用指针和引用实现。

  • 解释 const int* const 的含义。

  • 什么情况下必须使用指针而不能用引用?

Last updated