两个数组定义有什么区别?他们在记忆中是否有所不同?
int var = 5;
int (*p4)[2] = new int [var][2]; // first 2d array
int** p5 = new int*[var]; // second 2d array
for(int i = 0; i < var; ++i){
p5[i] = new int[2];
}
答案 0 :(得分:4)
是的,他们非常不同。第一个是真正的单个阵列;第二个实际上是var+1
数组,可能分散在你的RAM中。 var
数组保存数据,其中一个包含指向var
数据数组的指针。
答案 1 :(得分:1)
第一个是普通的,完全连续的数组,第二个也称为jagged array or lliffe vector,例如用于表示三角形结构。