|--------|
// / |4 4 4 |
// |--------| 4 |
// / |3 3 3 | 4 |
// |---------|3 | |
// / | 2 2 2 |3 | /
// |---------|2 |__|
// | 1 1 1 |2 | /
// | 1 1 1 |__|
// | 1 1 1 | /
// |_________|
double arr[4][3][3] = {{1,1,1,1,1,1,1,1,1},{2,2,2,2,2,2,2,2,2},{3,3,3,3,3,3,3,3,3},{4,4,4,4,4,4,4,4,4}};
Run Code Online (Sandbox Code Playgroud)
我认为这个数组由4层组成.
我想创建指向数组层的指针,并使用指针遍历该数组的各个层.
我尝试:
double (*pp1)[sizeof(arr[0]) / sizeof(ar[0][0][0])];
pp1 = arr[0];
Run Code Online (Sandbox Code Playgroud)
并从intelIsense获取错误:类型的值(double(*)(3)不能分配给double(*)(9)
在尝试解决这个问题时,我得到了一些结果。
我发现以下语句不会引发编译器错误
double arr[4][4][9];
double (*pp3)[9];
pp3 = arr[0];
Run Code Online (Sandbox Code Playgroud)
那么,从上面的代码中推断,只有当指针指向的元素数量等于数组的最小维度时,才可以将指针分配给数组,这是正确的吗?
更新:我认为只能在数组的最小层上创建指针。
有人可以解释一下吗?