int main()
{
int a[3][4] = {0};
printf("%dn", sizeof(a)); //48--二维数组大小
printf("%dn", sizeof(a[0][0])); //4--第一个元素大小
printf("%dn", sizeof(a[0])); //16--a[0]表示第一行数组的数组名
printf("%dn", sizeof(a[0] + 1)); //4
//4--a[0]为第一行数组的数组名,此时表示首元素地址
//a[0] + 1为第一行第二个元素的地址
printf("%dn", sizeof(*(a[0] + 1))); //4--第一行第二个元素大小
printf("%dn", sizeof(a + 1)); //4
//4--a为二维数组首元素地址--第一行的地址
//a + 1表示第二行的地址
printf("%dn", sizeof(*(a + 1))); //16--第二行数组大小
printf("%dn", sizeof(&a[0] + 1)); //4--第二行的地址
printf("%dn", sizeof(*(&a[0] + 1))); //16--第二行数组大小
printf("%dn", sizeof(*a)); //16--第一行数组大小
printf("%dn", sizeof(a[3])); //16
//sizeof()--函数内部表达式不会进行访问,该函数只计算大小
return 0;
}