OC:#define 和 const

替换范围:
#define可以替换字符、基础数据和语句等,而const不能替换语句。

作用阶段:
#define是在编译的预处理阶段起作用,而const是在 编译、运行的时候起作用。

作用方式:
#define只是简单的字符串替换,没有类型检查。而const有对应的数据类型,是要进行判断的,可以避免一些低级的错误。

存储方式:
#define只是进行展开,有多少地方使用,就替换多少次,它定义的宏常量在内存中有若干个备份;const定义的只读变量在程序运行过程中只有一份备份。

调试方便程度:
const常量可以进行调试的,#define是不能进行调试的,因为在预编译阶段就已经替换掉了。

效率和安全性
const可节省空间,避免不必要的内存分配,提高效率。const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容