一个关于C语言二维数组问题

早些时间因为操作失误发现一个问题 代码如下: #include<stdio.h> void main() { int a[ ][5]={1};//定义一个二维数组a printf("%d",a[100]);//输出a[100] } 如果是以前,我会认为上面的代码肯定有错误…… 可是它居然能不出错误,且能输出一个整数,例如536 为什么? 我问了一个老师,为什么一个定义好的二维数组可以用一维数组去引用? 得到答复说:计算机在存储的时候不管是什么形式的数据都是一维的…… 我也知道老师所说的,但是这次老师似乎并没有给出一个合理的解释 如果,老师解释的正确,那么所有的二维数组都将可以用一维数组去引用,但是例如:int b[3][5] ,引用b[10],就

会出错…… 所以,这里必定存在其它的解释 我连续几次运行上述程序,发现那个输出的数据总是不变,也就是说它不是随机的, 难道是地址? 对了,在学习指针时,提到二维数组的行地址,所以这里也有可能是行地…… 为了验证猜想                                                             

下面我添加了条语句: printf("%d",&a[100][0]); 再次运行程序 输出了两个相同的数! 这说明上面的猜想是正确的……即这个程序中&a[i][0]与a[i]是同一个含义

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值