披着函数外衣的关键字sizeof
2016-03-21 10:13
281 查看
常见的关键字sizeof
sizeof主要用于求取对象所占内存空间的大小。请看如下代码:
int arr1[]={1,2,3,4,5,6,7,8,9,10};
int i=0;
for(i=0;i<sizeof(arr1)/sizeof(arr1[0]);i++)
{
;
}
当数组长度过大便可方便的求出数组长度而不至于花费时间去一个个数数组元素。
sizeof 是关键字不是函数,其实就算不知道它是否为32 个关键字之一时,我们也可以
借助编译器确定它的身份。
请看如下代码:
int i=0;
1),sizeof(int); Yes
2),sizeof(i); Yes
3),sizeof int; No
4),sizeof i;
Yes
毫无疑问,32 位系统下 1),2)的值为4。那3)的呢?4)的呢?
在32 位系统下,通过Visual C++6.0 或任意一编译器调试,我们发现4)的结果也为4。
在4)的形式中可以看出sizeof即使不加括号也可以,但是函数呢?是不是也可以不加括号,
答案是肯定的。No,可以看出sizeof是关键字不是函数,不需要加任何头文件也可以使用。
好,再看3)。编译器怎么会提示出错呢?有4)可知sizeof的括号可以去掉,但是3)为什仫不可以呢?
那你想想sizeof int 表示什么啊?int 前面加一个关键字?类型扩展?明显不
正确,我们可以在int 前加unsigned,const 等关键字但不能加sizeof。好,记住:sizeof 在
计算变量所占空间大小时,括号可以省略,而计算类型(模子)大小时不能省略。
乖乖的写上括号,继续装作一个“函数”,做一个“披着函数外衣的关键字”。
做我的关键字,让人家认为是函数去吧。