#include<stdio.h> int main(void) { int a[]={1,2,3}; printf("%0X ",a); // a的类型原本是int [3],是个导出类型; 当a赋值给int *指针的时候,类型退化为int *,a+1指向a[1] printf("%0X ",&a); // &a的类型是int (*)[3], &a+1指向下一块int[3]的另一个数组;如果有的话,即二维数组的的情况: int (*p)[3]=&a;。 printf("%0X ",&a[0]); // &a[0]的类型是int *,&a[0]+1指向a[1] printf("%d ",sizeof(a)); //12,数组长度3*sizeof(int) printf("%d ",sizeof(&a)); //4,指针大小 printf("%d ",sizeof(&a[0])); //4,指针大小 return 0; }