C语言中的常量与只读变量,#define与const的区别
#include
中的#
表明C处理器需要在编译器接手工作之前先处理这条指令。
#define
这条定义宏的语句,是不是很熟悉,这条预处理指令会在编译器编译前把源文件中使用到这个宏的地方都先展开。
#define NUM 12
这个定义了一个宏常量,它的处理发生编译阶段。const int num = 15;
这个将变量num限制为只读,它的处理发生在程序运行时。
因为它们的值都不能够改变,都是它们的意义却是不同的。
#define LEN 100
const int TOTAL = 200;
int main(){
int a[LEN]; // 正确
int b[TOTAL]; // 错误
}
代码在编译时就需要确定好数组的长度,所以只能用#define定义的宏常量,const的作用是限制变量为只读,它的值只有在运行时才能够确定,因此用const的变量来指定数组长度会报错。