C 语言中宏的使用
宏的主要作用是在编译预处理时,对程序中所有出现的“宏名”都用宏定义中的字符串去代换 。
宏定义是由源程序中的宏定义命令完成的,宏代换是由预处理程序自动完成的。在 C 语言中,“宏”分为有参数和无参数两种,即分别简称为有参宏和无参宏。
无参宏
无参宏的宏名后不带参数,其定义的一般形式为:
#define 标识符 字符串
其中的 “#” 表示这是一条预处理命令,凡是以 “#” 开头的均为预处理命令。“define” 为宏定义命令,“标识符” 为所定义的宏名称,“字符串” 可以是常数、表达式、格式串等 。
#include#define NUM 4int main(int argc, const char * argv[]) { int a = 4;
a *= NUM; printf("%d ", a); return 0;
}
运行结果:16 。这里可以看出我们定义了一个宏名称为 NUM 的宏,当 main 中代码出现 NUM 的地方,就会自动用数字 4 进行替换,这样做的好处是当代码中多处存在同一变量时,只需要修改宏 NUM 的值即可,而无需在代码中一处处的'进行修改 。
有参宏
C 语言允许宏带有参数,在宏定义中的参数称为形式参数,宏调用中的参数称为实际参数 。
对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参 。
带参宏定义的一般形式为:
#define 宏名(形参表) 字符串
示例代码:
#include#define SUM(a) a+aint main(int argc, const char * argv[]) { int a = SUM(4); printf("%d ", a); return 0;
}
运行结果:8 。这里可以发现 SUM 将 4 传入,通过 a + a ,即 4 + 4 = 8 。
-
C语言基础循环结构
引导语:循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构。以下是本站小编分享给大家的C语言循环结构,欢迎阅读学习!1.1for循环结构循环语句的一般表达式是:for(表达式1;表达式2;表达式3)语句2....
-
C语言输出菱形的方法
题目:输出行列都相等的菱形,如5行5列:行列123451*2***3*****4***5*分析:当行数等于总行数的一半时,*是递增的,递增为2。当行数大于总行数的一半时,*是递减的,递增为2。设有一个行列为n的菱形,我们用变量i作为行数,以0开始,ik作为n菱第i行要输出的*个数。则i<=n的中值(用m...
-
2017年计算机二级C语言的应用
yjbys考试网为您整理了2017年计算机二级C语言的应用,更多计算机等级考试相关信息请访问应届毕业生计算机等级考试网。从前面对C语言的特点的分析中,不难看出C语言具有编程方便、语句简练、功能很强、移植性好等优点,是编程者喜欢使用的一种结构化程序设计语言。C...
-
内部排序之堆排序的实现
堆排序(HeapSort)只需要一个记录大小的辅助空间,每个待排序的记录仅占有一个存储空间。下面小编为大家整理了内部排序之堆排序的实现,希望能帮到大家!(1)基本概念a)堆:设有n个元素的序列:{k1,k2,...,kn}对所有的i=1,2,...,(int)(n/2),当满足下面关系:ki≤k2i,ki≤k2i+1或ki...