#define和const有何区别?
大家在学C语言的时候肯定知道有两种形式来定义常量,
#define PI 3.1415926const float PI = 3.1415926;
其实这是在C++出现后导致C语言的“多样性”,C++为了弥补C语言的缺点,在C的基础上增加了面向对象,同时也兼容C。const定义的常变量其实是C++的写法,而**#define定义的符号常量**是C语言原始的写法。不得不说,现在学习的C其实是C和C++的结合体,你中有我,我中有你。C++既支持面向对象,也支持面向过程。
那么二者不同的定义方式,最终有何区别呢?
符号常量:使用字符串来代替程序中的标识符,上篇文章已经说了,宏定义占用编译时间,其实就是在编译时将程序中的标识符替换为定义时的字符串。这样就做到了一改全改。但是,归根结底并没有在内存中为其分配空间,只是在编译时替换而已。常变量:首先它是一个变量,在内存中分配了相应的空间,但是前面有一个“常”字,表明这块内存空间初次写入内容后就不允许再改变了,*相当于不可改写(一次性)的光盘,初次写入后熔丝烧断,不会自动愈合。*当然在程序结束后,会自动清理内存。在程序执行时每次寻址取得相应单元的值,而不是在编译时替换。