a[i[j]的字节问题

在二维数组a[i][j]中,为什么&a[0[0]的字节数和a[0]一样是2个,而不是和a一样是4个。


#include <stdio.h>
int main() {
    short int a[2][2];
    a[0][0]=0x1100;
    a[0][1]=0x3322;
    a[1][0]=0x5544;
    a[1][1]=0x7766;
    printf("sizeof(a):%d\n",sizeof(a));
    printf("sizeof(&a[0][0]):%d\n",sizeof(&a[0][0]));
    printf("sizeof(a[0]):%d\n",sizeof(a[0]));
    unsigned char *p=(unsigned char *)&a[0][0];
    for (int i=0;i<8;i++) {
        printf("%02X ",p[i]);
    }
    return 0;
}
//sizeof(a):8
//sizeof(&a[0][0]):4
//sizeof(a[0]):4
//00 11 22 33 44 55 66 77

你的题面就不对啊!&a[0[0]的字节数和a[0]一样都是指针,长度都是4(64位是8),而a是有两个指针的数组是8(64位是16)。