一:C++中不但可以用define定义常量还可以用const定义常量,它们的区别如下:
eg:
#define MAX 255;
const float MAX = 255;
(1)作用阶段:
#define-在编译的预处理阶段,编译器把所定义的常量名字和常量值联系起来,进行替换;
const-在编译时确定其值,在编译、运行的时候起作用。
(2)作用方式:
#define-定义的常量没有数据类型,所给出的是一个立即数,只是简单的字符串替换,不进行类型安全检查,可能会产生意想不到的错误;
const-定义的常量有数据类型,编译时会进行类型检查,可以避免一些低级的错误。
(3)存储方式:
#define-不分配内存,给出的是立即数,预处理后占用代码段空间,有多少次使用就进行多少次替换,在内存中会有多个拷贝,消耗内存大;
const-定义的只读变量在静态存储区中分配空间,在程序运行过程中内存中只有一个拷贝。
(4)运行方式:
#define-宏替换只作替换,不做计算,不做表达式求解;
const-在编译时, 编译器通常不为const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的const常量,没有了存储与读内存的操作,使得它的效率也很高。
(5)代码调试的方便程度:
#define-是不能进行调试的,因为在预编译阶段就已经替换掉了;
const-const常量可以进行调试。
(6)作用范围:
#define-宏定义的作用范围仅限于当前文件;
const-默认状态下,const常量只在文件内有效,当多个文件中出现了同名的const常量时,等同于在不同文件中分别定义了独立的常量。如果想在多个文件之间共享const常量,必须在常量定义之前添加extern关键字(在声明和定义时都要加)。
(7)指针变量指向:
#define-用define定义的常量是不可以用指针变量去指向的;
const-用const定义的常量是可以用指针去指向该常量的地址的。
(8)定义函数:
#define-用define可以定义一些简单的函数;
const-const是不可以定义函数的。
#define与const区别总结
最新推荐文章于 2024-06-09 15:48:56 发布