1. 指针的本质与内存模型
指针是C/C++语言中最强大但也最容易让人困惑的特性之一。要真正理解指针,我们需要从计算机的内存模型开始讲起。
计算机内存可以看作是一系列连续的存储单元,每个单元都有唯一的地址标识。就像酒店里每个房间都有唯一的房号一样,内存地址就是数据的"房号"。当我们声明一个变量时,系统会为这个变量分配一块内存空间,而指针就是存储这块内存地址的变量。
c复制int var = 42; // 声明一个整型变量
int *ptr = &var; // ptr指针存储了var的地址
这里&是取地址运算符,它获取变量var的内存地址。*在声明时表示这是一个指针变量,在使用时表示解引用操作(访问指针指向的内存内容)。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 指针的基本操作与使用场景
2.1 指针的声明与初始化
指针声明的一般形式为:
c复制数据类型 *指针变量名;
例如:
c复制int *ip; // 整型指针
double *dp; // 双精度浮点型指针
char *cp; // 字符型指针
重要提示:声明指针后务必初始化,否则会成为"野指针"。良好的习惯是在声明时初始化为NULL:
c复制int *ptr = NULL;
2.2 指针的四大核心操作
-
取地址:使用
&运算符获取变量地址c复制int var = 10; int *p = &var; // p现在指向var -
解引用:使用
*运算符访问指针指向的值c复制printf("%d", *p); // 输出10 -
指针赋值:将一个指针的值赋给另一个指针
c复制int *q = p; // q现在也指向var -
指针运算:对指针进行加减运算(移动指针位置)
c复制p++; // 移动到下一个int位置(地址增加sizeof(int))
2.3 指针的典型应用场景
- 动态内存分配:
c复制int *arr = (int*)malloc(10 * size
