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