sizeof与数组结合使用时,注意数组名是表示数组的首地址还是是个指针变量。
#include <stdio.h> void f(int a[][2]) { printf("%d\n",sizeof a); //输出4,此时a是指针变量 } void f2(int(*a)[2]) { printf("%d\n",sizeof a); //输出4,此时a是指针变量 } void main() { int a[2][2]={1,2,3,4};//这是一个2*2的二维数组 int (*p)[2];//数组指针 p=a;//令p指向数组a printf("%d\n",sizeof a);//输出16,a是二维数组的数组名,返回整个数组占用空间大小 f(a); f2(a); printf("%d %d\n",sizeof(a+1),sizeof(p+1)); //a相当是指针,输出4 4 printf("%d %d\n",sizeof(a+0),sizeof(p+0)); //a相当是指针,输出4 4 printf("%d\n",sizeof(a[0]));//输出8,a[0]相当与一个一维数组的数组名 printf("%d\n",sizeof(a[0]+1));//输出4,a[0]的指针,输出指针大小 }