c语言数组问题,x[0][1]为什么是0,而不是2
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,你就可以理解了。
所以这里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,你就可以理解了。
展开全部
scanf的时候 传入的地址是x[i] 等同于 &x[i][0]
所以被scanf赋值的是x[0][0] x[1][0] x[2][0]
而x[0][1]没有被赋值 还是初始化的0值
于是输出为
2 0 4
所以被scanf赋值的是x[0][0] x[1][0] x[2][0]
而x[0][1]没有被赋值 还是初始化的0值
于是输出为
2 0 4
追问
明白了,明白了,谢啦
追答
不是这样理解的, x本身是二维数组 那么x[i]就是第i行的首地址
而scanf同样也没有对一行赋值的功能,它只是机械的把传过去的地址上赋上输入的值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询