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

admin2009-01-15  36

问题 有以下程序main ( ) {   int  a[3] [3],*p, i;    p=&a[0] [0];    for (i=0;i<9; i++) p =i;    for(i=0;i<3;i++) printf ("%d" ,a[1] );}    程序运行后的输出结果是

选项 A、12
B、123
C、234
D、345

答案8

解析 本题考查的是二维数组元素在内存中的排列形式。虽然二维数组成多维数组从结构上来看不是线性的,但是在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符合题意。
转载请注明原文地址:https://kaotiyun.com/show/tnXp777K
0

最新回复(0)