数组ptr的地址等于它的值?

Abo*_*our 2 c arrays printf pointers

可能重复:
C:数组的地址如何等于它的值?

SA
在CI中尝试打印数组指针的地址.

int a[3] = {0,1,2};
printf("\n%p",a);
printf("\n%p",(&a));
Run Code Online (Sandbox Code Playgroud)

2语句打印相同的值为什么?
提前致谢

det*_*tly 7

函数的任何数组参数都将衰减为指向数组第一个元素的指针.

C Book对此有一个很好的解释:

另一种情况是数组名称是&address-of运算符的操作数.在这里,它被转换为整个数组的地址.有什么不同?即使您认为地址在某种程度上"相同",但关键的区别在于它们具有不同的类型.对于类型为T的n个元素的数组,则第一个元素的地址具有"指向T"的类型; 整个数组的地址有'指向类型为T'的n个元素的数组的指针; 显然非常不同