问题
单项选择题
有以下程序
main()
int a[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p[i]=i;
for(i=0;i<3;i++)printf("%d",a[1][i]);
程序运行后的输出结果是______。
A.0 1 2
B.1 2 3
C.2 3 4
D.3 4 5
答案
参考答案:D
解析: 本题考查二维数组在内存中的排列形式。在C语言中,二维数组或多维数组在内存中的排列是连续线性存放的。它们的排列规则是:第一维下标变化最慢,最右边的下标变化最快。如题中的二维数组a[3][3],其9个元素在内存中的排列顺序是:a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2],a[2][0],a[2][1],a[2][2]。在主函数中,定义了一个整型指针p指向二维数组a的第一个元素a[0][0]。然后在第一个for循环中利用p将数组a的元素按顺序初始化为0~8共9个值,然后在第二个for循环中将a[1][0]、a[1][1]、a[1][2]三个元素的值依次输出。所以选项D正确。