当我们有一个多维数组,我们希望用一个指针来指向它的地址。在一本书中,它说我们将按照以下方式进行。
#include <stdio.h>
int main(){
int a[3][4][5];
int *p[5];
p = a;
return 0;
}
现在,我对以下几点感到很困惑:
- 当我在 CLion 中键入代码时,它会发出警告:
Incompatible pointer types 'int[5] *' and 'int[3][4][5]'
,为什么那个? - 为什么指针数组
*p
包含5个变量而不是3个变量? - 如何使用这个指针
*p
?
谢谢。
最佳答案
1) 因为……它们是不同的指针类型! ;) 具体来说,a
是一个三维整数数组,而 p
是一个一维整数指针数组。了解? a
包含整数,p
包含指向整数的指针。
2) 因为 int *p[5];
行声明它的长度为 5。在 C 中,您通过 []
中的数字定义数组的大小。
3) 嗯,如果你想让 p 指向 a 你需要让它的一部分指向 a,例如 p[0] = a;
关于c++ - 将多维数组的地址复制到指针时的指针维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34057186/