为什么不选D呀?答案为什么是A?(解释一下一维数组转换为二位数组吧)

img


widahensfcjkeahfcnajkesfhub
afceafcsafcadsfc

选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;
} 

img