我可以声明:
int (*ap)[N];
那么ap是指向大小为N的int数组的指针.为什么这有用呢?如果我将它传递给函数,它可以用它做什么有用的事情,它只能用一个指向数组内容的普通指针?
C FAQ说:
2.12:如何声明指向数组的指针?
通常,你不想.
Mar*_*nen 13
指向阵列的指针可用于动态分配多维阵列N,其中N-1维度是已知的.下面创建一个Nx3数组.
int (*ap)[3];
ap = malloc(N * sizeof(*ap));
/* can now access ap[0][0] - ap[N-1][2] */
Run Code Online (Sandbox Code Playgroud)
@Adam E/Cruachan,这与指针指针不同.ap是指向包含三个连续整数的内存块的单个指针.ap ++将指针地址前进到下一个三个整数的块.for int **pp;,pp指向一个整数指针,每个指针都可以指向内存中任何位置的整数.
+-----+ +------+ +-----+
ap ---> | int | vs. pp ---> | int* | -> | int |
| int | +------+ +-----+
| int | pp+1 -> | int* | -\
+-----+ +------+ \ +-----+
ap+1 -> | int | : : -> | int |
| int | +-----+
| int |
+-----+
: :
Run Code Online (Sandbox Code Playgroud)