早些时间因为操作失误发现一个问题 代码如下: #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]是同一个含义