一个关于c语言二维数组

为什么结果是204
输入:2<回车>4<回车>6<回车>
main()
{
int x[3][2]={0},l;
 for(l=0;l<3;l++)
scanf("%d",x[l]);
printf("%d,%d,%d\n",x[0][0],x[0][1],x[1][0]);
}
A.2,0,0    B.2,0,4    C.2,4,0    D.2,4,6

下面是我的理解,供参考:

1、首先根据二维数组x的定义,二维数组所有元素的值都被初始化为0.

2、然后通过for循环获取输入,依次将输入的3个数赋值到,x[0][0] ,x[1][0],x[2][0] ,因为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。

3、然后通过上面两个步骤后,结果为:x[0][0]=2(从输入获取的值),x[0][1]=0(数组定义时设置的值0),x[1][0]=6(从输入获取的值)。

测试如下:

#include <stdio.h> 
int main()
{

    int x[3][2]={0},l;
    for(l=0;l<3;l++){
         scanf("%d",x[l]);
     }
     
//     for(l=0;l<3;l++){
//         printf("x[%d]=%p,&x[%d][%d]=%p\n",l,x[l],l,0,&x[l][0]);
//     }
    
    printf("%d,%d,%d\n",x[0][0],x[0][1],x[1][0]);
    
    return 0; 
}

img

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

因为在上面的代码中,x[0][0]和x[0][1]用于存储第一次输入的数字(2),而x[1][0]用于存储第二次输入的数字(4)。所以,当程序最后输出时,答案就是2,0,4。