当我们有一个多维数组时,我们希望使用指针指向其地址。在一本书中,它说我们会做如下。
#include <stdio.h>
int main(){
int a[3][4][5];
int *p[5];
p = a;
return 0;
}
现在,我对以下几点感到困惑:
Incompatible pointer types 'int[5] *' and 'int[3][4][5]'
,为什么会这样?*p
包含5个变量而不是3个变量?*p
?感谢。
答案 0 :(得分:1)
1)因为......它们是不同的指针类型! ;)具体来说,a
是一个三维整数数组,而p
是一个指向整数的一维数组。了解? a
包含整数,p
包含指向整数的指针。
2)因为行int *p[5];
声明它长5。在C中,您可以使用[]
中的数字来定义数组的大小。
3)好吧,如果你想让p指向a,你需要让它的某些部分指向a,例如p[0] = a;