C语言一维数组的问题

#include
int main( )
{
int a[5]={10,20,30,40,50};
    printf("输出数组 a 中所有元素的值:\n");
    printf("%5d",a);
    printf("\n");
    return 0;
}
1、结果是1703712,为什么会输出这个结果?
2、如果将语句“printf("%5d",a);”改写成语句“printf("%5d",a+4);”,会输出什么结果?

printf("%5d",a); 这个 a 是数组名,a 表示是数组的首地址,所以这里输出的是数组 a 的地址值。
如果将输出语句改写成语句“printf("%5d",a+4);,输出的是数组 a 里第4个元素的地址值,即&a[4]。

a和数组a好像不是一个