【发布时间】:2016-12-15 06:25:03
【问题描述】:
我是 C++ 新手,并试图了解如何为 2D 数组分配内存。我已经经历了 SOF 中的几个线程和这些答案。
这些答案表明,二维数组和普通数组一样会发生连续的内存分配。 (如果我错了,请纠正我)答案 2 提到它应该能够使用*(array + (i * ROW_SIZE) + j) 访问array[i][j] th 元素
但是当我尝试这样做时,它给了我一个意想不到的结果。
代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int array[2][2] = { {1, 2}, {3, 4} };
cout<<*((array+1*2) + 1)<<endl;
cout<<**((array+1*2) + 1)<<endl;
return 0;
}
结果:
0x76e1f4799008
2012576581
它没有给我array[i][j] th 元素。有人可以解释这里发生了什么,该解决方案是错误的还是我误解了以前的答案。
【问题讨论】: