31、宏定义

1、案例
1.1、源码
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
int count = 3;
int age[3] = {1,2,3};
for (int i = 0; i < 3; ++i)
{
printf("%d\n",age[i]);
}
}
1.2、运行结果

运行结果

2、问题

虽然上述代码能够运行成功,但有一点不足之处,就是数组元素个数,发生改变时,要修改多处代码

3、宏定义

宏定义可理解为是声明一个常量

3.1、源码复写
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
#define COUNT 3
int main()
{
int age[COUNT] = {1,2,3};
for (int i = 0; i < COUNT; ++i)
{
printf("%d\n",age[i]);
}
}
3.2、好处

但发生元素个数改变时,则代码层面修改就比较方便

4、带参数的宏定义
4.1、源码
1
2
3
4
5
6
7
8
9
#include<stdio.h>
#define sum(v1,v2) ((v1)+(v2))
int main()
{
int a=10,b=20;
int c = sum(a,b);
printf("c=%d\n",c);
return 0;
}
4.2、运行结果

运行结果

4.3、总结

带参数的宏定义比函数要高,理由是函数需要寻址,而宏定义只是替换