您的位置:首页 > 职场人生

面试题-说明const与#define的特点与区别

2018-01-25 21:20 351 查看
说明const和#define的特点及区别

我们首先要认识到源程序文件(file.c)到生成可执行文件(file.exe)有四个阶段,预处理、编译、汇编、链接

1.编译器处理方式不同

#define是在预处理阶段

const是在编译阶段运行使用

//这边补充一点预处理器根据以#开头的命令,修改原始的程序。比如我们常见的#include <stdio.h>命令告诉处理器读取系统头文件stdio.h的内容,并把它直接插入程序文本中。咱们的#define也是,仅仅是单纯的文本替换

2.类型跟安全检查不同 

#define没有数据类型,不做任何类型检查,仅仅是展开替换

const常量有具体的数据类型,编译运行时会执行类型检查

3.空间分配不同

#define常量在实际程序中只是一个常数,并不分配空间

const常量存在于程序的数据段,并在堆栈上分配了空间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: