define和const比较
定义宏常量
例如:#define PI 3.1415926
编译预处理指令#define将PI定义成一个要被3.1415926取代的符号,此时PI不是一个变量,而是3.1415926的别名。
在编译开始之前,只要在程序的表达式中引用PI,预处理器就会用#define指令中的值(3.1415926)来取代它。
宏常量的缺点:宏常量被替换成立即数之后,内存中有同一个立即数的多份拷贝。
const常变量
在定义变量时,加上const修饰,告诉编译器,它的值是固定的,不能被改变。编译器会帮你检查、监督。
例如:const double PI=3.1415926
在编译的时候,const定义常量只是给出了对应的内存地址,而不是像#define给出的立即数,所以const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。