C语言中scanf函数加不加&号问题

我今天编写程序的时候,一个整型数组
int a[10],输入时,for( i=0; i<10;i++)
scanf("%d", a[i]);
我就没加&号,然后系统居然也没有报错,最后求的是这十个数字的平均值,然后调试成功,答案也是对的。我就很惊恐,不知道是系统的问题,还是说可以这样??
我又思考,有点绕进去了,因为数组本身也像是指针,a[1]指向的就是某一个数字的地址,那么这样想我不知道对不对
系统调试成功又是怎么回事
我真的好慌
因为今天考试就是这道题,我在系统里面调试成功了,可是没加&,好像真的不对
求大佬们解释一下

这样写是不行的,可能你的编译器恰好帮你优化了
我这边这样写会直接段错误退出
是真的不对
有帮助望采纳~

需要加&,a[i]代表的是i索引下标的值,a+i代表取地址。a[1]就是1索引下标的值,怎么能是地址呢?

&符号是取地址符,scanf第二个参数是输入数据的地址,由于地址也是一个整数,所以在部分编译器下可能不会报错但是在程序运行的时候程序会崩溃,为数组元素写入值时不使用&是错误的,数组内的元素并不会存入你所输入的值,对于系统输出结果是正确的,也许初始化的数组元素的值刚好是对应数组的地址,结论就是需要加&。