#define MAX 1与const int MAX = 10的区别
1)编译器对二者的处理方式不同
define 是在预编译处理阶段直接进行替换,而const常量则是在编译运行阶段时才会使用。
2)define是宏定义没有类型,而const则有具体的类型;define不进行类型安全检查但const 则要进行类型检查。
3)define不分配内存,他给出的是一个立即数。而const则在静态存储区存储区中给const常量分配一个位置,从一个程序的开始到结束该常量只有一份不进行拷贝。
4)在编译时,编译器通常不会为const常量分配内存,而是将他们保存在符号表中,使其成为一个编译期间的常量,没有存储和读内存的操作;宏替换只是做一个简单的替换,不做任何的计算和表达式求值。