我试着找过了,但没有找到任何确切的答案。我知道我的问题不会那么难。也许只是我累了..。
基本上,我想声明一个指向二维数组的指针。我想这样做,因为最终我将不得不调整数组的大小。我已经用一个一维数组成功地完成了以下工作:
int* array;
array = new int[somelength];
我想用2D数组做以下事情,但它不能编译:
int* array;
array = new int[someheight][somewidth];
编译器给我一个错误,指出‘somewidth’不能出现在常量表达式中。我尝试了所有**的组合,但似乎都不起作用。我知道这并不是说complicated...Any帮助很受欢迎。
发布于 2010-10-11 15:34:22
const int someheight = 3;
const int somewidth = 5;
int (*array)[somewidth] = new int[someheight][somewidth];
发布于 2010-10-11 15:32:04
来自here的一个现成的示例,在用短语“二维动态数组”进行了几秒钟的谷歌搜索之后:
int **dynamicArray = 0;
// memory allocated for elements of rows.
dynamicArray = new int *[ROWS];
// memory allocated for elements of each column.
for( int i = 0 ; i < ROWS ; i++ ) {
dynamicArray[i] = new int[COLUMNS];
}
// free the allocated memory
for( int i = 0 ; i < ROWS ; i++ ) {
delete [] dynamicArray[i];
}
delete [] dynamicArray;
发布于 2010-10-11 15:41:42
我建议使用比数组数组简单得多的方法:
#define WIDTH 3
#define HEIGHT 4
int* array = new int[WIDTH*HEIGHT];
int x=1, y=2, cell;
cell = array[x+WIDTH*y];
我认为这是一种比数组的数组更好的方法,因为它的分配要少得多。你甚至可以写一个帮助器宏:
#define INDEX(x,y) ((x)+(WIDTH*(y)))
int cell = array[INDEX(2,3)];
https://stackoverflow.com/questions/3904224
复制相似问题