案例描述
本案例要求通过使用宏定义,依次交换两个一位数组中的元素。
必备知识
带参数的宏定义
带参数的宏定义,其语法格式如下所示。
#define 标识符(形参表) 字符单;
上述语法格式和不带参数的宏定义有些类似,不同的是多了一个括号,括号中的“形参表”由一个或多个形参组成,当多余一个形参时,形参之间要用逗号进行分隔。对于带参数的宏定义来说,同样需要使用字符串替换宏名,使用实参替换形参。
通过学习带参数的宏定义可以发现,带参数的宏定义和带参函数可以实现同样的功能,但两者却有本质的不同。如下表:
由于宏定义在程序预处理的时候执行,因此对于函数来说,宏定义的开销小一点。在使用宏定义中务必要注意一些问题,先来看一个例子,有一个带参数的宏定义,代码如下所示:
#define ABS(x) ((x) >= 0 ? (x) : -(x))
这是一个求绝对值的带宏定义