C++指针入门:10分钟掌握核心用法

张开发
2026/4/17 12:27:40 15 分钟阅读

分享文章

C++指针入门:10分钟掌握核心用法
一、什么是地址程序运行时所有变量都放在内存中每一个字节都有一个编号这个编号就是 “地址”。可以理解为变量 房间变量值 房间里的人地址 房间号查看变量地址用取地址符。int a 10; cout a endl; // 输出 a 的地址形如0x61ff1c二、什么是指针指针就是专门用来存放地址的变量。指针变量定义类型名 *指针变量名;示例int a 10; int *p a; // p 是指针存放 a 的地址int *表示 “指向 int 类型变量的指针”p里存的是地址*p表示取指针指向的那个变量的值解引用三、两个核心符号取地址变量 → 地址*解引用地址 → 变量本身int a 10; int *p a; cout a; // 10 cout *p; // 10等价于 a *p 20; // 通过指针修改 a cout a; // 20四、指针指向关系图解易懂版a 变量空间 --------- | 10 | --------- ↑↑ || --------- | a | p 指针变量 ---------p存的是a的地址*p就是a本身修改*p 修改a五、指针的简单操作int a 100; int *p a; *p 200; // a 变成 200 cout *p; // 输出 200 cout p; // 输出地址 cout p; // 指针变量自己的地址六、指针与数组超级常用数组名就是数组首元素的地址int arr[] {10,20,30,40}; int *p arr; // 等价于 arr[0]访问数组元素两种写法arr[i] ←→ *(p i)遍历数组指针版for(int i0; i4; i){ cout *(pi) ; }七、指针作为函数参数传地址之前学的 “值传递” 不能修改实参用指针传地址可以直接修改外面的变量示例交换两个数void swap(int *a, int *b) { int temp *a; *a *b; *b temp; } int main() { int x 10, y 20; swap(x, y); // 传地址 // x20 y10 }八、空指针与野指针空指针指向地址 0表示不指向任何空间int *p nullptr; // C11 推荐野指针指向未知非法地址极其危险int *p; // 没有初始化野指针原则指针一定要初始化不用时置为nullptr九、新手高频易错点分不清和*定义时int* p和int *p一样但int* p,q容易误解野指针、空指针解引用导致程序崩溃指针越界访问函数传参时忘记传地址以为能修改实参十、今日重点总结取地址*解引用指针 存地址的变量*p就是指针指向的变量本身数组名 首地址arr[i] ↔ *(pi)指针做函数参数可以直接修改实参指针必须初始化避免野指针

更多文章