📅  最后修改于: 2023-12-03 14:40:26.292000             🧑  作者: Mango
这是一道C语言的选择题,题目要求考生理解并熟练使用多维数组。
下面的代码创建了一个二维数组a,数组大小都为5。请问在使用a[3][2]这个元素的时候,它在内存中的地址是多少?
int a[5][5];
首先需要了解C语言中多维数组是如何在内存中存储的。在内存中,多维数组的元素是按照一维数组的方式排列的,即按行优先或按列优先的方式存储。
对于二维数组a[5][5],在内存中的存储方式为按行优先,即a[0][0]、a[0][1]、a[0][2]、...、a[0][4]、a[1][0]、a[1][1]、...、a[4][3]、a[4][4]。
因此,在使用a[3][2]这个元素的时候,它在内存中的地址可以计算得出。假设a[0][0]的地址为1000,每个元素占用4个字节,则a[3][2]的地址为:
1000 + (3*5 + 2)*4 = 1032
因此,a[3][2]在内存中的地址为1032。
在使用a[3][2]这个元素的时候,它在内存中的地址是1032。
#include <stdio.h>
int main()
{
int a[5][5];
printf("%p\n", &a[3][2]); // 输出a[3][2]的地址
return 0;
}