sizeof

来源:互联网 发布:java认证有用吗 编辑:程序博客网 时间:2024/06/10 08:53
#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="http://img.blog.csdn.net/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报告的是指针的大小。

                                             
0 0
原创粉丝点击