Sizeof ---最冤枉的关键字

    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!!

你可能感兴趣的:(Linux,C程序设计)