C++:define和const的区别

define和const的区别

  1. define定义的常量是没有类型的,如#define MAX 255,编译器只是把定义的变量名和变量值对应起来;const定义的常量是有类型的,存放在静态区中,如const float MAX = 255;。也正是因为define无类型,所以没有类型安全的检查就有可能会有意想不到的错误,而const会在编译的时候进行类型检查
  2. define定义的变量是在预编译的时候完成的,只要程序中用到该变量的地方都要进行拷贝替换,内存消耗较大;const定义的变量在编译时确定它的值,只有一次拷贝。所以宏定义在程序中所消耗的内存要比const变量大得多
  3. define定义的常量是不可以用指针变量去指向的;const定义的常量是可以用指针指向该常量的地址
  4. define可以定义一些简单的函数;const不可以定义函数
  5. 编译器一般不给const常量分配存储空间,而是把它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
  6. 宏替换只做替换,不做计算,不做表达式求解
  7. 宏定义的作用范围仅限于当前文件。const在默认情况下是在当前文件内有效,当多个文件中出现了同名的const变量时,等同于在不同文件中分别定义了独立的变量。如果想在多个文件中共享同一个const对象,那么必须在变量定义之前添加extern关键字(声明和定义的时候都要加)
发布了148 篇原创文章 · 获赞 57 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章