在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编译器在编译时对其进行排序?
https://stackoverflow.com/questions/2565039
复制相似问题