//函数变参数调用实例
#include<stdio.h>
#include<stdarg.h>
#define EON 32768
void vmax(int *large,char *message,...)//函数参数格式为<固定参数>,<变参数,用...表示>
{
int num;
va_list num_ptr;//声明变参类型
va_start(num_ptr,message);//message为最后一个固定参数,使指针指向调用参数传来的第一个参数
printf("%s",message);
*large=va_arg(num_ptr,int);//*large取第一个值
printf("large=%d/n",*large);
while((num=va_arg(num_ptr,int))!=EON)//num取第二个值。每次判断都使nun_ptr指向下一个值
{
printf("num=%d/n",num);
if(num>*large)*large=num;
}
va_end(num_ptr);//正常返回
}
void main()
{
int big;
vmax(&big,"the largest of 10,20,-5,100 is ",10,20,-5,100,EON);
printf("%d",big);
}
该博客展示了C语言中函数变参数调用的实例。通过定义函数vmax,利用va_list、va_start、va_arg和va_end等宏来处理变参数。在main函数中调用vmax函数,找出一组数中的最大值并输出,体现了C语言处理变参数的方法。
1016

被折叠的 条评论
为什么被折叠?



