#include <stdio.h> int main() { //数组名的首元素的地址 //1.sizeof(数组名) 表示整个数组 //2.&数组名 表示数组名整个数组 //3.地址分32位与64位差别,而数值不用 //一维数组 int a[] = {1,2,3,4}; printf("%d\n", sizeof(a)); //16字节 , 4个元素 * 4字节 printf("%d\n", sizeof(a + 0));//4(32位) 或 8(64位) 字节 , 代表首元素的地址 printf("%d\n", sizeof(*a));//4字节 , 表示首元素地址的数值的字节大小 printf("%d\n", sizeof(a + 1));//4(32位) 或 8(64位) 字节, 代表第二元素的地址 printf("%d\n", sizeof(a[1]));//4字节 , 代表第二元素的大小 printf("%d\n", sizeof(&a)); //4(32位) 或 8(64位) 字节 , &a代表是数组的地址,而地址大小是4个字节 printf("%d\n", sizeof(*&a));//16字节 , &a是数组的地址,数组的地址解引用,访问的是数组,sizeof()计算的数组大小,单位字节 printf("%d\n", sizeof(&a + 1));//4(32位) 或 8(64位) 字节 , &a是整个数组的地址,+1后,是跳过了整个数组,但还是一个地址 printf("%d\n", sizeof(&a[0]));//4(32位) 或 8(64位) 字节 , 先于[]结合,即取第一个元素,后结合&,即取第一个个元素的地址 printf("%d\n", sizeof(&a[0] + 1));//4(32位) 或 8(64位) 字节 , 先于[]结合,即取第一个元素,后结合&,即取第一个个元素的地址,在+1即取第二个元素的地址 }标签:字节,32,辨析,元素,地址,64,printf,sizeof From: https://blog.csdn.net/ZHUO_ZI/article/details/142282564