版权声明:版权归作者所有 https://blog.csdn.net/qq_36772866/article/details/88833260
在C语言中可以用#define定义一个标识符来表示一个常量。其特点是:定义的标志符不占内存,只是一个临时的符号,预编译后这个符号就不存在了。预编译又叫预处理。预编译不是编译,而是编译前的处理,这个操作是在正式编译之前由系统自动完成的,所以叫预编译。用#define 定义标识符的一般形式为:
#define 标识符 常量
#define 和 #include一样,也是以“#”开头的。凡是以“#”开头的均匀为预处理指令,所以#define也是一条预处理指令。#define 又称宏定义,标识符为所定义的宏名,简称宏。
标识符的命名规则与前面讲的变量的命名规则一样。#define的功能是标识符定义为其后的常量。一经定义,程序就可以直接使用标识符来表示这个常量。是不是与定义变量类似?
但是要区分开来,变量名表示的是一个变量,但是宏名表示的是一个常量。
变量可以给他赋值,但是常量当然就不能给他赋值了!
宏所表示的常量可以是数字,字符,字符串,表达式,其中最常用的是数字。
那么为什么要使用宏定义?
用宏定义有什么好处?
我们直接使用数字不行?
为什么要用一个标识符表示数字?
宏定义的最大好处就是 “方便程序的修改”。
使用宏定义可以使用宏代替一个程序中,经常使用过的常量。
那么程序在预编译的时候是怎么处理宏定义的呢?
其实预编译所执行的操作就是简单的“文本”替换。对于宏定义而言,预编译的时候会将程序中所出现“标识符”的地方全部用这个“常量”替换
如果要终止其作用域可以使用#undef命令
#undef 标识符
undef 后面的标志符表示索要终止的宏
#include<stdio.h>
#define NUM 5;
int main(void)
{
int i, j = NUM;
int a[NUM] = {0};
printf("请输入 %d 个数:",j);
for(i=0; i< NUM; ++i)
{
scanf("%d", &a[i]);
}
for(i=0; i<NUM; ++i)
{
printf("%d\x20", a[i]);
}
printf("\n");
return 0;
}