zoukankan      html  css  js  c++  java
  • define vs const vs enum

    以前用C,习惯了define;const,enum 什么的基本不太会用,现在有时间整理一下。

    /***********************************************************************************************************/

    define:宏定义,在预编译阶段,编译器将宏作简单替换。比如:

        #define SUNDAY 7

    在预编译阶段,凡是文本中出现SUNDAY的地方,编译器就会将其用7来代替。这样的好处显而易见:增加程序的可读性。

    /**************************************************************************************************************/

    const:次关键字较为复杂,可以理解为对变量“加锁”,被const修饰的变量就成为只读变量。cosnt与define的主要区别在于:const是用来修饰变量的,既然是变量,编译器就需要对其进行类型检查。这样会更安全。

    const 容易让人产生迷惑,不容易分清到底是对谁加锁。例如:

      ...............................................................................................................................................................................................

      |  const char *p = "hello,world!";     //const 是将*p进行了加锁,即:*p (hello,world)已经是常量,不能修改。                                           |

      |   char const *p = "hello,world!" ;   //const 是将*p进行了加锁,即:*p (hello,world)已经是常量,不能修改。                                           |

      |   /*如果有:p[0] = 'a';   则会报错:error: assignment of read-only location *p */                                                                       |

      ...............................................................................................................................................................................................

      |    const (char*) p = q;                                                                                                                                                     |

      |    char* const p = q;    /* 将p进行了加锁,此时p不会被修改*/                                                                                          |

      |    /*如果有:p = q1; 则会:error : assignment of read-only variable 'p' */                                                                               |

      .............................................................................................................................................................................................

    /********************************************************************************************************************/

    enum:

    创建枚举类型:

      方法一:

        typedef enum {

          SUNDAY,

          MONDAY,

           .......

           .......

           .......

              SATURSDAY} week;

        week my_week = SUNDAY;

      方法二:

        

               enum {

          SUNDAY,

          MONDAY,

           .......

           .......

           .......

              SATURSDAY} week;

        enum week my_week = SUNDAY;

      FYI: enum相当于一下子定义了很多宏。

    /*******************************************************************************************************************/

  • 相关阅读:
    BAT 大厂最流行的测试技术体系与测试职业发展晋级指南
    通知 | 2021 第一期《测试开发实战宝典》赠书活动顺利结束!
    你还缺个好工作?但7月毕业季即将来临怎么办
    一图看懂云栖大会「云原生」重磅发布
    阿里云重磅发布业务中台产品 BizWorks,中台发展进入下一个阶段
    云栖·追踪云原生|Serverless入围阿里云十大核心技术
    先行一步,7大技术创新和突破,阿里云把 Serverless 领域的这些难题都给解了
    New homework
    German
    suggestion
  • 原文地址:https://www.cnblogs.com/yongjiuzhizhen/p/4298931.html
Copyright © 2011-2022 走看看