我觉得这个问题初学者一般都不明白,楼上的回答也不完全正确。
我补充一些吧(虽然不知道你能理解多少),全部理解需要你学很多计算机专业的课程。
首先,打印出的值相同,不代表东西相同。
a是数组名,它的值是数组的起始地址
&a是取出数组的地址,它是一个值
&a[0]是数组第一个元素的地址,和&a很类似
考虑一下图片里的程序,再想一想。
不明白的可以继续问,你也最好告诉我,你学习过的基础知识。毕竟你学过的东西不同,理解的能力就不同。和这个相关的课程:形式语言、算法和数据结构、高级语言程序设计、编译原理、操作系统、汇编。只有这些都深入理解,才可能比较深刻的理解C语言里面的为什么。