一维数组名的sizeof计算大小

发布时间 2023-06-03 16:46:49作者: 小蠕虫

int main()
{
//数组名是首元素地址
// 1,sizeof(数组名)——数组名表示整个数组
// 2,&数组名——表示整个数组
// 除这两种情况外,都是首元素地址
//
int a[] = { 1,2,3,4 };
printf("%d\n", sizeof(a));//szieof(数组名),计算的是数组的总大小—单位字节—16
printf("%d\n", sizeof(a + 0));//a+0 为首元素地址 地址大小,32位 4个字节 64位 8个字节
printf("%d\n", sizeof(*a));//*a 首元素地址解引用 大小是4
printf("%d\n", sizeof(a + 1));//4/8 a+1 第二个元素地址
printf("%d\n", sizeof(a[1]));//第二个元素的大小 4
printf("%d\n", sizeof(&a));//&a 取出的是数组的地址 地址的大小 4/8
printf("%d\n", sizeof(*&a));//&a再解引用,还是a 整个数组的大小 16
printf("%d\n", sizeof(&a+1));//&a+1跳过了一个数组,指向还是一个地址,地址大小 4/8
printf("%d\n", sizeof(&a[0]));//&a[0]取出第一个元素的地址 地址大小 4/8
printf("%d\n", sizeof(&a[0]+1));//&a[0]+1第二个元素地址的大小 4/8


return 0;
}