问题 单项选择题

有以下程序
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正确。

单项选择题
单项选择题