1. 指针基础与变量地址
任务目标
定义整型变量,打印其内存地址;通过指针间接访问并修改该变量的值,验证指针与变量地址的关系。
核心知识点
指针保存的是变量的内存地址。通过取地址运算符 & 获取变量地址,通过解引用运算符 * 访问指针所指向地址上的数据。本案例用最小代码演示这一闭环。
完整代码
#include <stdio.h>
int main(void) {
int num = 100; // 定义整型变量并初始化
int *p = # // 定义指针p,保存num的地址
// 1. 打印变量值与地址
printf("num 的值: %d\n", num);
printf("num 的地址: %p\n", (void*)&num);
printf("指针p保存的地址: %p\n", (void*)p);
// 2. 通过指针读取变量值
printf("通过指针解引用读取 num: %d\n", *p);
// 3. 通过指针修改变量值
*p = 200;
printf("通过指针修改后 num 的值: %d\n", num);
printf("通过指针解引用读取修改后的值: %d\n", *p);
return 0;
}
编译与运行
gcc -o pointer_basic pointer_basic.c
./pointer_basic
验证方法
程序运行后观察输出:
num 的地址与指针p保存的地址打印结果完全相同,证明指针确实保存了该变量的地址。- 执行
*p = 200后,num的值变为 200,说明通过指针成功修改了原变量的值。 - 地址值本身由系统运行时分配,每次执行可能不同,属正常现象;只需确认上述两个逻辑关系成立即可判定通过。
预期输出示例
num 的值: 100
num 的地址: 0x7ffd8a3b1c44
指针p保存的地址: 0x7ffd8a3b1c44
通过指针解引用读取 num: 100
通过指针修改后 num 的值: 200
通过指针解引用读取修改后的值: 200
注意:地址值 0x7ffd8a3b1c44 仅为示例,实际运行时由系统分配,数值不同不影响验证。