zoukankan      html  css  js  c++  java
  • 最冤枉的关键字----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) 的值是多少?
    }

  • 相关阅读:
    给Lisp程序员的Python简介
    QuickLisp常用命令
    修改windows cmd字体
    Eclipse生成JavaDoc时指定字符集, 避免页面乱码
    css颜色名
    css3动画
    使用placeholder实现动态配置persistence.xml
    spring下配置tomcat jdbc pool 报找不到"com.mysql.jdbc.Driver"类
    去除移动端浏览器点击元素时的边框
    JS经典闭包问题
  • 原文地址:https://www.cnblogs.com/liweilijie/p/4984205.html
Copyright © 2011-2022 走看看