首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >多维数组在内存中是如何格式化的?

多维数组在内存中是如何格式化的?
EN

Stack Overflow用户
提问于 2010-04-02 12:46:43
回答 3查看 81.9K关注 0票数 201

在C语言中,我知道我可以使用以下代码在堆上动态分配一个二维数组:

int** someNumbers = malloc(arrayRows*sizeof(int*));

for (i = 0; i < arrayRows; i++) {
    someNumbers[i] = malloc(arrayColumns*sizeof(int));
}

显然,这实际上创建了一个一维数组的指针,指向一组单独的一维数组的整数,“系统”可以理解我的意思,当我问:

someNumbers[4][2];

但是当我静态地声明一个2D数组时,如下面的代码行所示:

int someNumbers[ARRAY_ROWS][ARRAY_COLUMNS];

...does在堆栈上创建了一个类似的结构,还是完全是另一种形式?(例如,它是一维指针数组吗?如果不是,它是什么,它的引用是如何计算出来的?)

还有,当我说“系统”的时候,到底是什么导致了这个问题呢?内核?或者是C编译器在编译时对其进行排序?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2565039

复制
相关文章

相似问题

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