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]的指针,输出指针大小
}