一维数组
int a[] = {1,2,3,4};
1.数组名单独放在sizeof()内部,数组名表示整个数组
所以sizeof(数组名)计算的是整个数组的大小,单位是字节
2.&数组名,数组名表示整个数组
所以&数组名取出的是整个数组的地址
3. 除此之外,所有的数组名都表示首元素的地址
printf("%d\n",sizeof(a));
// 输出16,因为数组名单独在sizeof的内部,数组名表示的是整个数组,每个整数字符四个字节。
printf("%d\n",sizeof(a+0));
//输出4,因为数组名没有单独在sizeof的内部,a表示首元素,有四个字节。
printf("%d\n",sizeof(a+1));
//输出4,数组名没有单独在sizeof的内部,a表示首元素,再+1表示的是数组内下表为1的数。
printf("%d\n",sizeof(&a));
//输出4,&a为数组a地址,但是数组名没有单独放在sizeof()的内部,所以指的是数组内首元素。
printf("%d\n",sizeof(&a+1));
//输出4,&a表示数组a的地址,地址表示4个字节,+1以后还是一个地址,所以是4个字节。
printf("%d\n",sizeof(&a[0]));
//输出4,&a[0]表示首元素,首元素四个字符。
printf("%d\n",sizeof(&a[0]+1));
//输出4,&a[0]+1表示下表为1,首元素四个字符。