一个有趣的C语言程序

经常听有人说C语言里其实没有数组,说实话刚开始我是拒绝的,毕竟自己用了这么长时间

他为了说明这个问题,给了我这样一个简短的程序

qq%e6%88%aa%e5%9b%be20161205123102

结果程序运行是这样的。咦???不应该报错吗?哪有a这个数组???这是什么鬼

估计经常写C语言的一眼就能看出来了吧,但是我还是写一下这里的原理吧

首先,int x[5],x实际上保存的是这个数组首元素的地址也就是&x[0],a[x]的等效写法是*(a+&x),因为上面说了x实际上是x[0],所以可以进一步写成*(a+&x[0]),又因为a = 1,所以可以替换成*(&x[0]+1),也就是x[1],所以就是x[1]对应的值:2

不过至于C语言到底有没有数组,这个还有待商榷吧

About the author

NOBUG.IN

Add comment

By NOBUG.IN

Your sidebar area is currently empty. Hurry up and add some widgets.