【发布时间】:2021-06-02 07:24:20
【问题描述】:
为什么不能直接将二维数组的地址赋值给指针?
有什么方法可以在一行中分配它,而不是借助 for 循环?
还有其他更好的方法吗?
// Array of 5 pointers to an array of 4 ints
int (*Aop[5])[4];
for(int i = 0;i<5;i++)
{
Aop[i] = &arr2[i]; //Works fine
}
//Why this doesn't work int
int (*Aop[5])[4] = &arr2[5][4]
【问题讨论】:
-
数组初始值设定项必须是字面量,不能相互分配数组。
-
int (*Aop[5])[4];在这里是什么意思?你的意图不明确。指向“固定”大小的数组的指针有点没用,因为无论如何都没有边界检查。 -
在提出此类问题时,请关注 C 或 C++ 之一。他们的行为可能会有很大差异。
-
如果您使用了
std::vector,您可以只分配它们,您就不必担心原始指针和手动复制。这也是为什么您不应该标记 both C 和 C++ 的原因,因为如果您询问 C,答案显然与 C++ 不同
标签: c++ c multidimensional-array implicit-conversion explicit-conversion