选A的原因是因为赋值那里的原因,具体分析如下:
for循环里面的x[i]在循环中,依次为x[0],x[1],x[2] ,而x为二维数组名,x[0],x[1],x[2]代表的是行指针,它们的地址值也依次和这三行第一个元素的地址值相同,即和: x[0][0], x[1][0], x[2][0]相同(可以用打印语句打印一下他们的地址值,观察一下);
所以输入2,4,6,就是给这三个位置的元素赋值,所以,x[0][0]=2, x[1][0]=4,x[2][0]=6,数组其他位置因为定义二维数组时初始化为0了,所以其他位置的值都为0;
所以根据以上分析得到,x[0][0]=2,x[0][1]=0, x[1][0]=4, 所以选A。
测试代码如下:
#include <stdio.h>
int main(void){
int x[3][2]= {0},i;
for(i=0;i<3;i++){
scanf("%d",x[i]);
}
// for(i=0;i<3;i++){
// printf("x[%d]=%p,&x[%d][0]=%p\n",i,x[i],i,&x[i][0]);
// }
printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);
return 0;
}