两种创建二维数组的方法之间的区别
两个数组定义有什么区别?他们在记忆中的实现是否不同?
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];
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,它们非常不同。第一个实际上是一个数组;第二个实际上是 var+1 数组,可能分散在整个 RAM 中。
var
数组保存数据,一个数组保存指向var
数据数组的指针。Yes, they're very different. The first is really a single array; the second is actually
var+1
arrays, potentially scattered all over your RAM.var
arrays hold the data, and one holds pointers to thevar
data arrays.第一个是普通的、完全连续的数组,第二个也称为锯齿状数组或lliffe向量并且可以例如用于表示三角形结构。
The first is an ordinary, fully contiguous array, the second is also known as jagged array or lliffe vector and can e.g. be used to represent triangular structures.