数组名的意义:
1. sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。
2. &数组名,这里的数组名表示整个数组,取出的是整个数组的地址。
3. 除此之外所有的数组名都表示首元素的地址。
根据以上数组名的意义来解决下面这些题:
#include<stdio.h>
int main()
{
int a[] = { 1,2,3,4 };
printf("%d\n", sizeof(a));
printf("%d\n", sizeof(a + 0));
printf("%d\n", sizeof(*a));
printf("%d\n", sizeof(a + 1));
printf("%d\n", sizeof(a[1]));
printf("%d\n", sizeof(&a));
printf("%d\n", sizeof(*&a));
printf("%d\n", sizeof(&a + 1));
printf("%d\n", sizeof(&a[0]));
printf("%d\n", sizeof(&a[0] + 1));
}
全部打印出来的是什么结果,我们来一个一个的解决这些问题?
1:
printf("%d\n", sizeof(a));
printf("%d\n", sizeof(a)); //sizeof(a) 计算的是整个数组的大小,4个元素,每个元素都是4个字节,所以最后的大小是: 16 字节。
2:
printf("%d\n", sizeof(a + 0));
3:
printf("%d\n", sizeof(*a));
4:printf("%d\n", sizeof(*a));
5:printf("%d\n", sizeof(a + 1));
6:printf("%d\n", sizeof(a[1]));
7:printf("%d\n", sizeof(&a));
8:printf("%d\n", sizeof(*&a));
9: printf("%d\n", sizeof(&a + 1));
10: printf("%d\n", sizeof(&a[0]));
11:printf("%d\n", sizeof(&a[0] + 1));