1. 指针基础与变量地址

任务目标

定义整型变量,打印其内存地址;通过指针间接访问并修改该变量的值,验证指针与变量地址的关系。

核心知识点

指针保存的是变量的内存地址。通过取地址运算符 & 获取变量地址,通过解引用运算符 * 访问指针所指向地址上的数据。本案例用最小代码演示这一闭环。

完整代码

#include <stdio.h>

int main(void) {
    int num = 100;          // 定义整型变量并初始化
    int *p = &num;          // 定义指针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 仅为示例,实际运行时由系统分配,数值不同不影响验证。