• 最冤枉的关键字----sizeof


    <h4>一、常年被人误认为函数。</h4>
    &nbsp;
    sizeof 是关键字不是函数,其实就算不知道它是否为32 个关键字之一时,我们也可以借助编译器确定它的身份。看下面的例子:
    int i=0;
    A),sizeof(int); B),sizeof(i); C),sizeof int; D),sizeof i;

    毫无疑问,32 位系统下A),B)的值为4。那C)的呢?D)的呢?在32 位系统下,我们发现D)的结果也为4。

    咦?sizeof 后面的括号呢?没有括号居然也行,那想想,函数名后面没有括号行吗?由此轻易得出sizeof 绝非函数。

    好,再看C)。编译器怎么怎么提示出错呢?不是说sizeof 是个关键字,其后面的括号可以没有么?那你想想sizeof int 表示什么啊?int 前面加一个关键字?类型扩展?明显不正确,我们可以在int 前加unsigned,const 等关键字但不能加sizeof。

    <blockquote>好,记住:sizeof 在计算变量所占空间大小时,括号可以省略,而计算类型(模子)大小时不能省略。一般情况下,咱也别偷这个懒,乖乖的写上括号,继续装作一个“函数”,做一个“披着函数皮的关键字”。</blockquote>

    做我的关键字,让人家认为是函数去吧。
    &nbsp;
    <h4>二、sizeof(int)*p 表示什么意思?</h4>
    &nbsp;
    留几个问题(讲解指针与数组时会详细讲解),32 位系统下:
    int *p = NULL;
    sizeof(p)的值是多少?
    sizeof(*p)呢?

    int a[100];
    sizeof (a) 的值是多少?
    sizeof(a[100])呢?//请尤其注意本例。
    sizeof(&a)呢?
    sizeof(&a[0])呢?

    int b[100];
    void fun(int b[100])
    {
    sizeof(b);// sizeof (b) 的值是多少?
    }

  • 相关阅读:
    iptables
    vsftpd安装
    完整java开发中JDBC连接数据库代码和步骤
    java中使用队列:java.util.Queue
    程序中遇到重点问题
    在JSP页面中用select下拉列表来显示List列表的方式
    java.lang.String cannot be cast to [Ljava.lang.Object;
    java虚拟机的内存设置
    网络协议都有哪些
    使用java技术将Excel表格内容导入mysql数据库
  • 原文地址:https://www.cnblogs.com/liweilijie/p/4984205.html
Copyright © 2020-2023  润新知