问题 单项选择题

有以下程序
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.012

B.123

C.234

D.345

答案

参考答案: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]。在主函数中,首先定义了二维数组a[3][3],然后定义了一个指针p指向数组a的第1个元素 a[0][0]。在第一个for循环中,依数组a在内存中的排列顺序为其元素赋从0~8九个值,然后用第二个 for循环依次输出a[1][0],a[1][1],a[1][2]三个元素的值。所以,4个选项中选项D符合题意。

单项选择题
单项选择题 A1型题