指针(Pointer)
每个变量都住在内存的某个地址;指针就是专门存"地址"的变量。
一、两个关键符号
&n —— 取地址:拿到变量 n 的门牌号。
*p —— 解引用:顺着指针 p 存的地址,找到那个变量的值。
它们互为逆操作:& 把"变量"变"地址",* 把"地址"变回"变量"。
二、互动演示:指针怎么指、怎么改
橙色是变量 n,蓝色是指针 p。点按钮一步步看 p = &n、*p、*p = 100。
0x1004
35
int n
0x1008
…
0x2000
空
int* p
点“下一步”:先让 p 指向 n。
三、指针与数组同源
数组名就是首元素地址:int* p = a; 让 p 指向 a[0]。
指针 +1 自动跳到下一个元素,所以 a[i] 等价于 *(a + i)。
四、参考代码
#include <iostream>
using namespace std;
int main() {
int n = 35;
int* p = &n; // p 存放 n 的地址
cout << *p << endl; // 35:顺着 p 找到 n 的值
*p = 100; // 通过 p 修改 n
cout << n << endl; // 100:n 真的被改了
int a[5] = {10, 20, 30, 40, 50};
int* q = a; // 指向 a[0]
cout << *(q + 1); // 20,等价于 a[1]
cout << sizeof(int); // 4
return 0;
}
读法:int* p ——"p 是指向 int 的指针"。&取地址,*取值。