【发布时间】:2021-02-26 18:44:40
【问题描述】:
我可以运行这个
int a = 5;
auto foo = new int [a][4][4];
但是当我尝试这个时:
int a = 5;
int * foo[4][4];
foo = new int [a][4][4];
我得到了错误
error: incompatible types in assignment of ‘int (*)[4][4]’ to ‘int* [4][4]’
问题
我必须为foo 指定什么类型?
编辑: 目标是拥有一块内存,而不是一组指针。
【问题讨论】:
-
这里附带说明:多维数组,例如
int[4][4]本质上是参差不齐的,这可能是也可能不是您想要的 这对性能(缓存)有影响,通常您实际上想要一个连续的内存块。例如:int arr[4*4]; int x = arr[i*4 + j]访问元素arr[i,j] -
@SebastianHoffmann -- 在这种形式中,多维数组不是参差不齐的 -- 数据位于连续内存中。 See this
-
你在一个二维指针数组(这就是你写的)和一个指向二维数组的指针(这就是你想要的)之间感到困惑。