首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >声明指向多维数组的指针并分配该数组

声明指向多维数组的指针并分配该数组
EN

Stack Overflow用户
提问于 2010-10-11 15:22:31
回答 5查看 82.1K关注 0票数 26

我试着找过了,但没有找到任何确切的答案。我知道我的问题不会那么难。也许只是我累了..。

基本上,我想声明一个指向二维数组的指针。我想这样做,因为最终我将不得不调整数组的大小。我已经用一个一维数组成功地完成了以下工作:

int* array;
array = new int[somelength];

我想用2D数组做以下事情,但它不能编译:

int* array;
array = new int[someheight][somewidth];

编译器给我一个错误,指出‘somewidth’不能出现在常量表达式中。我尝试了所有**的组合,但似乎都不起作用。我知道这并不是说complicated...Any帮助很受欢迎。

EN

回答 5

Stack Overflow用户

发布于 2010-10-11 15:34:22

const int someheight = 3;
const int somewidth = 5;

int (*array)[somewidth] = new int[someheight][somewidth];
票数 46
EN

Stack Overflow用户

发布于 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;
票数 7
EN

Stack Overflow用户

发布于 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)];
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3904224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档