zoukankan      html  css  js  c++  java
  • define,const, enum,inline区别用法

    define
    没有类型,不能指明一组数据之间具有关联性,
    有参宏的时候,逻辑不符合计算逻辑    容易产生误解
    宏的结尾不用分号
    宏的作用域是从定义位置开始,到文件结束,如果要终止宏定义的作用域,则可以用#undef 宏名称
    #define PI 3.14
    .......
    #undef PI
     
    const
    const对象一旦创建后就不得在改变,所以const对象必须初始化
    在不改变const对象的操作中还有一种是初始化,如果利用一个对象去初始化另一个对象,则他们是不是const都无关紧要
    int i = 42;
    const int j = i;
    int k = j;           以上均正确
    另外,在默认状态下,const对象仅在文件内有效,当多个文件中出现了同名的const变量,其实等同于在不同文件中分别定义了独立的变量
     
    const int ci=1024;
    const int & r1 = ci;        //这里是正确的,因为引用及其对应的对象都是常量
    r1 = 50;                         //这里是错误的 r1是常量的引用
    int & r2 =ci;                   //错误,因为试图让一个非常量引用指向了一个常量对象
    总结:因为不允许直接为ci赋值,当然也就不能通过引用去改变ci 因此对r2的初始化时错误的,假设合法,则可以通过r2去改变它来改变对象的值,这显然是不对的
        用什么类型创建。用什么类型去保存
     
    const int *p=&a        //不用通过指针修改它所指向的位置的值
    int const *p =&a       //同上
    int * const p              //不能修改指针指向的位置    可以修改值
    总结:const 在 * 左边,即不能修改 它指向位置的值 (*p就是指)加上const
               const 在 * 右边    即不能修改它指向的位置,因为const 在p左边 p是地址变量
     
    enum
    写法注意:
    1. enum DIR
    2. {
    3. up,
    4. down,
    5. left,
    6. right //最后一个不用写逗号
    7. };//不要忘记分号
    默认从0开始 0-3
     
    inline函数
     
    1. #define f(x) x*x
    2. inline int fun(int x)
    3. {
    4. return x*x;
    5. }
    6. int _tmain(int argc, _TCHAR* argv[])
    7. {
    8. printf("%d ", f(3 + 5));
    9. printf("%d ", fun(3 + 5));//不会造成歧义,先把参数算出来,再参与计算。
    10. return 0;
    11. }
    内联函数会对参数进行检测,不会造成歧义
    内联函数会节省空间消耗 
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    数组方法之find
    检查数组中是否有NaN
    数组方法之includes
    数组方法之lastIndexOf
    数组方法之indexOf
    数组方法之forEach
    col-md-push-*和col-md-offset的区别
    35个jQuery小技巧!
    35个jQuery小技巧!
    VS 2013插件
  • 原文地址:https://www.cnblogs.com/Tempt/p/9987544.html
Copyright © 2011-2022 走看看