c语言数组问题,x[0][1]为什么是0,而不是2

如题所述

这里是二维数组x[3][2],3行2列,可以理解成3个一维数组,每个一维数组中有两个元素。
所以这里scanf赋值,x[i]表示x[0],x[1],x[2],分别表示3个一维数组的第一个元素,
即x[0][0],x[1][0],x[2][0],所以赋值当然是给这3个元素赋值,又因为二维数组定义时就将数组中元素都清0了,自然x[0][1]就为0了。
不过这里要说明的是,x[i]就好比一维数组的数组名的意思,一维数组的数组名是可以用来表示第一个元素的。例如:int a[10]; 其中a就表示a[0],不信可以自己写个程序验证一下,给数组赋值,只输出a,你就可以理解了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-26
scanf的时候 传入的地址是x[i] 等同于 &x[i][0]
所以被scanf赋值的是x[0][0] x[1][0] x[2][0]
而x[0][1]没有被赋值 还是初始化的0值
于是输出为
2 0 4追问

明白了,明白了,谢啦

追答

不是这样理解的, x本身是二维数组 那么x[i]就是第i行的首地址
而scanf同样也没有对一行赋值的功能,它只是机械的把传过去的地址上赋上输入的值

相似回答