C++编程中const和#define的区别
来源:互联网 发布:批处理软件 编辑:程序博客网 时间:2024/05/16 18:46
(1) 编译器处理方式不同
define宏是在预处理阶段展开。
const常量是编译运行阶段使用。
(2) 类型和安全检查不同
define宏没有类型,不做任何类型检查,仅仅是展开。
const常量有具体的类型,在编译阶段会执行类型检查。
(3) 存储方式不同
define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。
const常量会在内存中分配(可以是堆中也可以是栈中)。
(4)const 可以节省空间,避免不必要的内存分配。 例如:
#define PI 3.14159 //常量宏
const doulbe Pi=3.14159; //此时并未将Pi放入ROM中 ......
double i=Pi; //此时为Pi分配内存,以后不再分配!
double I=PI; //编译期间进行宏替换,分配内存
double j=Pi; //没有内存分配
double J=PI; //再进行宏替换,又一次分配内存!
const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而 #define定义的常量在内存中有若干个拷贝。
(5) 提高了效率。 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
阅读全文
0 0
- C++编程中const和#define的区别
- C语言中const和#define的区别
- C语言中 关于const和#define的区别心得
- [C/C++] const和#define的区别
- 【C++】#define和const的区别
- C++ 中 const和define的区别
- php中const和define的区别
- php中define和const 的区别
- 编程中常见的问题--------const define的区别
- const和define的区别
- #define和const的区别
- #define和const的区别
- const和define的区别
- const 和define的区别
- const 和define的区别
- const 和 define 的区别
- const和#define的区别
- const和#define的区别
- 关于spring的配置注入和注释注入的见解
- Linux 系统便捷安装pycharm
- iOS UIFont原生字体和第三方字体.ttf的使用
- JavaScript类型浅谈
- MYSQL之表连接
- C++编程中const和#define的区别
- Redis 学习笔记
- 全是1的最大子矩阵
- 激活函数总结(一)
- Linux网络性能评估工具iperf
- 代码3 爬取贴吧多页数据
- redis的使用
- Android 设计模式
- Java初级入门