初学C++,学到的随时总结
内容学习自课本和网上论坛。
在c++语言中,可以使用define和const定义常量,代码如下:
#define max 100;
const int max =100;
#define宏定义,我理解就是给一个常数定义了一个别名,在编译器编译时直接用定义的名字替换该常数,从而不用每次使用该常数时都再次输入,并不分配内存空间。
const 定义的一个其值不能被修改的变量(本质还是变量,不能修改),所以必须分配内存空间。
虽然在作用上,两者都可以定义常量(常数),但其本质是:define是一个别名标签,const是对一个变量进行限制。
基于此,可以总结两者的的区别。
1.使用阶段
const在编译阶段使用;
define在预处理阶段使用。
2.数据类型
const有数据类型,编译时进行安全检查;
define无类型,不做安全检查。
3.内存空间
const 在静态存储区占用内存空间;
define 不分配内存,但在使用过程中,每次使用都是拷贝,多次拷贝可以消耗内存。
4.某些集成化调试工具可以对const常量进行调试,但是不能对宏常量调试(这个还没有用到)
此外,参加面试的先辈给出的补充:const 在程序中只有一个备份,而define 有多个备份。
由于编译器通常不为const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,所以使用cons的效率高于使用define