C语言_带参宏和函数的区别及各自优缺点


前言

C语言中,要想解决某子问题,可以自定义一个函数来专门处理该问题,比如:我想比较两个数的大小,那么我可以地定义一个函数max来完成两个数求最大值功能。但是,C语言中我们也可以通过宏定义来定义一个求最值的函数MAX,然后通过使用带参宏来完成最大值的求解。那么问题来了,两种方式都可以定义一个求最值的函数,那他们有什么区别了?两者有啥优缺点呢?本文则针对以上问题进行说明和总结。


一、 带参宏 和 函数 概念引入?

#include <stdio.h>
#define MAX(a, b) ((a) > (b) ? (a) : (b))//宏定义最大值函数

int max(int x,int y)//自定义求最值函数
{
	return x>y?x:y;
}


int main()
{
	printf("宏定义中两数最大值为:%d\n",MAX(8,99));
	printf("自定义函数中两数最大值为:%d\n",max(55,3));
	
	return 0;
}

代码运行结果展示:
两个方法都可以达到求最值的目的,那么两者有何区别?有何优缺点?

在这里插入图片描述


二、带宏参 和 函数 的区别和优缺点:

在这里插入图片描述
|–| const修饰符| |
|–|–|
| | |

const修饰符符号常量
执行阶段编译、运行时起作用预处理阶段
作用方式①有对应的数据类型;②将变量转为常量时,会做语法检查,如果存在越界问题或超界情况,会给出警告简单的字符替换

|是否能调试||
|初始化||

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值