数组与指针

C 语言教程 · 第 6 章 · 6 次浏览

数组存同类型的一批数据;指针存变量的内存地址。指针是 C 语言最强大也最危险的部分,是"理解计算机"的关键。

数组

int arr[5] 声明长度 5 的数组,下标从 0 开始。二维数组 int m[2][3]。

指针

int *p = &x 声明指针 p 指向变量 x 的地址;*p 解引用取值;&x 取地址。指针可以指向数组(数组名本身就是首地址)。

指针与数组

arr[i] 等价于 *(arr + i)。指针加减按指向类型大小移动。

注意

指针用前一定要初始化,用完 free 释放(malloc 分配的内存),否则内存泄漏或野指针崩溃。

代码示例

#include <stdio.h>

int main() {
    // 数组
    int arr[5] = {10, 20, 30, 40, 50};
    for (int i = 0; i < 5; i++) {
        printf("arr[%d]=%d\n", i, arr[i]);
    }

    // 指针
    int x = 42;
    int *p = &x;          // p 指向 x 的地址
    printf("x 的值: %d\n", x);
    printf("p 指向的值: %d\n", *p);
    *p = 100;             // 通过指针修改 x
    printf("修改后 x: %d\n", x);

    // 指针遍历数组
    int *q = arr;
    for (int i = 0; i < 5; i++) {
        printf("%d ", *(q + i));
    }
    printf("\n");

    return 0;
}