两种创建二维数组的方法之间的区别

发布于 2024-12-07 19:59:53 字数 238 浏览 0 评论 0 原文

两个数组定义有什么区别?他们在记忆中的实现是否不同?

 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];
 }   

What is the difference between two arrays definitions? Are they realized different in memory?

 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

柒夜笙歌凉 2024-12-14 19:59:53

是的,它们非常不同。第一个实际上是一个数组;第二个实际上是 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 the var data arrays.

疯了 2024-12-14 19:59:53

第一个是普通的、完全连续的数组,第二个也称为锯齿状数组或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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文