const 表示恒定不变的数据,用于定义只读变量的关键字。
const int a = 10;
int const a = 10;
用const关键字,无论是全局变量,还是局部变量,生命周期都是程序运行的整个过程,全局变量的生命周期为程序运行的整个过程。我们知道全局变量是静态的,而使用了const的局部变量只是有了静态的特性,并没有说他就是静态变量了,我们知道,局部变量存储在栈中,静态变量存储在静态存储区中,而经过const修饰的变量存储在内存中的“只读数据段”中,只读数据段中存放的常量和只读变量等不可改变的量
1 define 是预编译指令,而const是定义变量的。define定义的宏是预处理阶段展开的,而const定义的只读变量是在编译运行阶段的。
2 const 定义的是变量,而define定义的是常量。define定义的宏在编译后就不存在了,他不占用内存,因为他不是变量,系统只会给他分配内存。但是const定义的常量本质上是一个变量,具有变量的基本属性,有类型,占用内存单元。可以说,常变量是有名字的不变量。而常量是没有名字的。有名字就存在引用,所以从使用角度看,除了不能作为数组的长度,用const定义的变量具有宏的优点,而且使用更加方便。所以编程时使用const和define都可以的情况下,建议使用define。
3 const定义的是变量,而宏定义的是常量,所以const 定义的对象有数据类型,而宏定义的的对象没有数据类型,所以编译器可以对前者进行检查,而对后者只是机械的进行字符替换,没有类型安全检查。
用 const 修饰指针变量的三种效果
1