当您只使用一个下标访问二维数组时,有人可以向我解释 C 如何检索一行的正确内存地址吗?
例子 -
int array2D[2][2] = {1,2,3,4};
printf ( "starting address of row2 = %p" , array2D[1]);
我知道在 C 中下标时实际上发生的是指针添加,因此对于一维数组,数组名称指向元素 0。在这种情况下,如果我想要元素 1,编译器将采用起始地址(比如 4000)和向它添加 4(假设为 4 位 int),以便返回的是内存地址 4004 处的项目。
我的理解是,当您填充二维数组时,如我的示例所示,它们是按顺序分配的,所以我会有
1 2
3 4
在地址
4000 4004
4008 4012
那么 C 如何计算出在这种情况下 array2D[1] 应该指向 4008 而不是 4004?它是运行 sizeof() 运算符还是我在这里误解了基本原理?
提前致谢