前置知识: C

二级指针与指针数组

00:00
1 min Advanced 2026/6/14

C语言二级指针与指针数组详解及应用场景。

1. 二级指针

int x = 42;
int *p = &x;     // 一级指针:指向 int
int **pp = &p;   // 二级指针:指向 int*

**pp;  // 42
*pp;   // &x (p 的值)
pp;    // &p

2. 指针数组 vs 数组指针

// 指针数组:数组的每个元素是指针
int *arr[5];  // 5 个 int* 元素

// 数组指针:指向数组的指针
int (*ptr)[5]; // 指向 int[5] 的指针

3. 应用场景

3.1 修改调用者的指针

void allocate(int **pp) {
    *pp = malloc(sizeof(int));
    **pp = 42;
}

int *p = NULL;
allocate(&p);  // p 现在指向分配的内存

3.2 字符串数组

const char *names[] = {"Alice", "Bob", "Charlie"};
// names 是指针数组,每个元素指向一个字符串字面量

3.3 命令行参数

int main(int argc, char **argv) {
    // argv 是指针数组,每个元素指向一个参数字符串
    for (int i = 0; i < argc; i++) {
        printf("%s\n", argv[i]);
    }
}

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式