这两个声明如下:
int (*p)[8];
int *p[8];
答案 0 :(得分:10)
第一个是指向8个整数数组的单个指针,而第二个是指向8个指针的数组,每个指针都是一个整数。
如果你只是提起cdecl
,这对于这类事情来说很棒:
pax$ cdecl
Type `help' or `?' for help
cdecl> explain int (*p)[8];
declare p as pointer to array 8 of int
cdecl> explain int *p[8];
declare p as array 8 of pointer to int
cdecl> explain char*(*fp[])(int,float*);
declare fp as array of pointer to function (int, pointer to float)
returning pointer to char
实际上你可以使用clockwise/spiral rule来做这件事,但我不必担心,因为我发现了cdecl
,出于同样的原因我不再转换大的任意32我的头脑中的位数从十进制到十六进制了 - 我可以如果必须的话,但使用工具会更容易: - )
答案 1 :(得分:4)
第一个p是指向8 int数组的指针。 第二个p是一个包含8个指针的数组。