zoukankan      html  css  js  c++  java
  • const、define与sizeof

    一.const的用途
    1.定义const常量
    2.可以修饰函数的形参,返回值,以及函数体。被const修饰的内容可以受到强制保护,防止被意外修改,提高程序健壮性。

    const 返回值

            函数返回值为 const  只有用在函数返回为引用的情况。 函数返回值引用常量表示不能将函数调用表达式作为左值使用。例如前面讲的返回引用的函数 min( )。

     int  & min ( int  &i,  int  &j);
    可以对函数调用进行赋值,因为它返回的是左值:min ( a ,  b )=4;
    但是,如果对函数的返回值限定为 const  的:const  int  & min ( int & i, int  &j );
    那么,就不能对 min ( a, b ) 调用进行赋值了。
     
    二.const与define的不同
    1.const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者没有类型安全检查,只有字符替换,并且在字符替换过程中可能产生意想不到的错误(边际效应)
    2.有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试
     
    三.在类数据成员前用mutable修饰,就可以在const函数中对其进行修改(可应用于对某些特殊成员变量进行修改,而大多数成员变量禁止被修改的情景)
     
    四.sizeof
    定义:判断数据类型在内存中所占用的字节数
    注意
    • 当数据类型为指针时,sizeof(指针)恒为4,而与指针的类型无关
              eg: char * p = "0123456789";    sizeof(p) = 4;
              void * p =  (void * ) malloc (100);    sizeof(p) = 4;
    • 当数据类型为数组时,sizeof(数组)为数组的大小
              eg:char p[] = "0123456789", sizeof(p)=11;
              char p[100] = "0123456789", sizeof(p)=100;
            1. 如果结构体中的元素的长度都小于处理器的位数,便以结构体里最长的数据元素为对齐单位
              
           2.如果结构体中存在长度大于处理器的位数的元素,则以处理器的位数为对齐单位
      eg:(64位系统)
      
  • 相关阅读:
    POJ 2112 Optimal Milking (Dinic + 二分)
    [1444] The Waterfall Flow
    [1443] Weiqi
    POJ 3750 小孩报数问题 (约瑟夫问题)
    POJ 1386 Play on Words
    支持Delphi2009/2010的DES加密单元
    升级Delphi2010时text字段问题
    JS的encodeURI编码后,PHP解码方法
    Indy发送邮件被kbas退掉
    关于Delphi2010使用Indy发送邮件乱码问题的解决
  • 原文地址:https://www.cnblogs.com/happygirl-zjj/p/4633946.html
Copyright © 2011-2022 走看看