【问题描述】:使用可变参数,实现一个函数,求函数未知参数的最大值。
【解决思路】:首先要了解va_list、va_start、va_arg、va_end这几个宏的定义
![](https://i-blog.csdnimg.cn/blog_migrate/c8059be048d756d510381e3c6588f4ac.png)
了解了这几个宏的定义,我们可以写出以下的代码:
#include<stdio.h>
#include<windows.h>
#include<stdarg.h>
int Max(int n, ...)
{
va_list arg;
int i = 0;
va_start(arg, n);
int max = va_arg(arg, int);
for (i = 1; i < n; i++)
{
int temp = va_arg(arg, int);
if (temp>max)
{
max = temp;
}
}
}
int main()
{
int a = 1;
int b = 2;
int c = 3;
int max1 = Max(2, a, b);
int max2 = Max(3, a, b, c);
printf("max1=%d\n", max1);
printf("max2 =%d\n", max2);
system("pause");
return 0;
}
我们对上边的代码进行分析:
![](https://i-blog.csdnimg.cn/blog_migrate/2874fc178df150289a13b27055908fdc.png)