指针
一、指针的定义
指针(Pointer):存储变量内存地址的特殊变量,通过它能直接访问和操作对应内存单元的数据。
#include <bits/stdc++.h>
using namespace std;
int x = 10, *p; // p是整型指针变量(int*)
int main(){
p = &x; // &取地址运算符
*p = *p + 1; // *解引用运算符
// *p++ 错误,因为++优先级高于*
// (*p)++ 正确,先解引用再自增
return 0;
}
关键点:
&:获取变量内存地址*:声明指针类型或解引用指针- 指针类型必须与指向变量类型匹配
二、指针的核心应用
- 函数参数传递中的指针
指针允许函数修改外部变量的值,突破值传递的限制。
#include <bits/stdc++.h>
using namespace std;
int x = 1, p = 1;
void fun1(int x){ // 值传递
x++; // 只修改局部副本
}
void fun2(int *p){ // 指针传递(地址传递)
(*p)++; // 直接修改原变量
}
int main(){
fun1(x); // x不变
fun2(&p); // p变为2
return 0;
}
内存模型解析:
-
每个函数有独立的栈帧存储局部变量
-
值传递:创建参数值的副本
-
指针传递:共享同一内存地址
-
指针与数组的关系
数组名本质是指向首元素的常量指针。
int a[5] = {1,2,3,4,5};
int *p = a; // 等价于 &a[0]
*(p + 2) = 10; // 修改arr[2]

浙公网安备 33010602011771号