一、const 介绍
1、const 定义
const 修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。
2、const 目的
const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点(后面会讲到 const 与 宏的区别)。
3、const 作用
1)可以定义 const 常量,具有不可变性。例如:
const int Max = 100; Max++会产生错误。
2)便于进行类型检查,使编译器对处理内容有更多了解,消除一些隐患。例如:void f(const int i) {....} 编译器就会知道 i 是一个常量,不允许修改。
3)可以避免意义模糊的数字出现,同样可以很方便进行参数的调整和修改。同宏定义一样,可以做到不变则已,一变都变。
(这句话,没搞懂什么意思,希望有知道的大神告知!!)
4)可以保护被修改的东西,防止意外的修改,增强程序的健壮性。例如:
[cpp] view plain copy #include <stdio.h> void f (const int i) { i = 10; //在函数体内修改了 i ,编译器就会报错。 } int main (void) { f (1); return 0; } 输出结果: 错误: 向只读形参‘i’赋值 5)可以节省空间,避免不必要的内存分配。例如:
#define PI 3.14159 //常量宏 const double Pi=3.14159; //此时并未将Pi放入RAM中 double i=Pi; //此时为Pi分配内存,以后不再分配! double I=PI; //编译期间进行宏替换,分配内存 double j=Pi; //没有内存分配
double J=PI; //再进行宏替换,又一次分配内存!
[cpp] view plain copy //test.c #include <stdio.h> int main (void) { const double Pi; double i = Pi; double j = Pi; return 0; } [cpp] view plain copy objdump -d test 080483b4 <main>: 80483b4: 55 push