#include <stdio.h>
#include <stdlib.h>
int main()
{
<span style="white-space:pre"> </span>int a[2] = {0,1};
<span style="white-space:pre"> </span>int i = sizeof(a);
<span style="white-space:pre"> </span>int j = sizeof(a)/sizeof(a[0]);
<span style="white-space:pre"> </span>printf("%d,%d\n", i,j);
<span style="white-space:pre"> </span>return 0;
}<div><img src="file:///C:\Users\omega\AppData\Roaming\Tencent\Users\917149219\QQ\WinTemp\RichOle\B@GBC4B5F36HX2$SWMMSH$R.png" alt="" /></div><img src="https://img-blog.youkuaiyun.com/20150327162858887?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjQyMTUzNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
当数组是函数的参数时,sizeof不能正确报告数组的大小,这个测试函数打印出4而不是10
<pre name="code" class="cpp">f(char a[10])
{
int i = sizeof(a);
printf("%d\n",i);
}
编译器把数组参数当作指针对待,在本例中当成char *a,因而sizeof报告的是指针的大小。