您的位置:首页 > 其它

Sizeof ---最冤枉的关键字

2010-10-09 12:07 211 查看
sizeof()功能:计算数据空间的字节数;

sizeof是关键字不是函数,其实就算不知道它是否为32个关键字之一时,我们也可以借助编译器确定它的身份。

看下面的例子:

;int i = 0;

A) sizeof(int); B)sizeof(i) C)sizeof int D)sizeof i;

毫无疑问,32位系统下 A ,B的值为 4。
在32位系统下,通过Visual C ++ 6.0或任意一编译器调试,我们发现D的结果也是4。Sizeof后面的括号呢? 没有括号居然也可,那想想,函数名后面没有括号行吗?由此轻易得出sizeof绝非函数。

好,再看C)。编译器怎么提示出错呢?不是说sizeof是个关键字,其后面的括号可以没有么?那你想想sizeof int表示什么啊?Int前面加一个关键字?类型扩展?明显不正确,我们可以在int前加unsigned,const等关键字但不能加sizeof。好,记住:sizeof在计算变量所占空间大小时,括号可以省略,而计算类型(模子)大小时不能省略。一般情况下,咱也别偷这个懒,乖乖的写上括号,继续装作一个“函数”,做一个“披着函数皮的关键字”。做我的关键字,让人家认为是函数去吧。

***********************************************************************************************

转的一些:

sizeof()功能:计算数据空间的字节数
1.与strlen()比较
strlen()计算字符数组的字符数,以"/0"为结束判断,不计算为'/0'的数组元素。
而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。
2.指针与静态数组的sizeof操作
指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为4。
注意:int *p; sizeof(p)=4;
但sizeof(*p)相当于sizeof(int);
对于静态数组,sizeof可直接计算数组大小;
例:int a[10];char b[]="hello";
sizeof(a)等于4*10=40; //存的是占用的字节数
sizeof(b)等于6;


strlen("hello")等于5!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: