C指针阵列初始化

kHA*_*OOm 5 c pointers

我很困惑这两个初始化之间有什么区别:

    int (*p)[10];
Run Code Online (Sandbox Code Playgroud)

    int *p[10]
Run Code Online (Sandbox Code Playgroud)

我知道他们都可以指向2D数组,其行数中的元素数为10 ....

Ale*_*xFZ 2

在这里详细说明一下正确答案:

第一行:

 int (*p)[10];
Run Code Online (Sandbox Code Playgroud)

声明“p”是一个指向容量为 10 个整数的数组的内存地址的指针。它可以用英语读作:“整数指针‘p’指向内存中的 10 个连续整数”。

第二行:

int *p[10]
Run Code Online (Sandbox Code Playgroud)

声明“p[]”是一个由 10 个整数指针组成的数组。这是指向整数的内存地址数组。在这种情况下,“p”是内存中 10 个指针的序列(恰好是其他 int 的内存地址)。