c语言可变参数函数教学 c语言可变参数用法

如何在C语言中定义参数数目可变的函数

定义如下:

创新互联公司主营鄠邑网站建设的网络公司,主营网站建设方案,app开发定制,鄠邑h5微信小程序搭建,鄠邑网站营销推广欢迎鄠邑等地区企业咨询

函数返回值 函数名(形参1, 形参2, ...)

举例说明:

int  func(int a, int b, ...)

{

//函数体

......

}

printf()函数就是一个参数可变的函数,其函数原型为:

int printf (const char *__format, ...);

C语言中如何实现可变参函数

C语言中可变参函数实现,主要通过VA_LIST宏及相关操作的几个宏。

一、涉及宏及说明:

所有相关宏均定义在stdarg.h中。

1、va_list: 可变参数列表指针。

2、va_start:获取可变参数列表的第一个参数的地址。

3、va_arg:获取可变参数的当前参数,返回指定类型并将指针指向下一参数。

4、va_end:清空va_list可变参数列表。

可变参函数的实现,就是这四个宏的使用。

二、代码举例:

在实际应用中,经常有获取若干个数最大值的情况,当数量比较大的时候,一般通过数组实现,但个数不多时,一般写一个max函数。 常规写法都是用到几个数的max,就写几个参数, 对此可以实现一个可变参数函数,第一个参数指定共计有多少数据,后续各个参数为要比较的值。

#include stdio.h

#include stdarg.h

int max(int n, ...)//可变参数函数。

{

int r,i;

va_list ap;//定义可变参数。

if(n == 0) return -1;//异常参数。

va_start(ap, n);//得到起始点。

for(i = 0; i  n; i ++)

{

int v=va_arg(ap,int) ;//获取下一个参数值。

if(i == 0) r=v;

else if(rv) r=v;

}

va_end(ap);//结束可变参数。

return r;//返回结果。

}

可以用如下主函数测试:

int main()

{

printf("%d\n",max(1, 1));

printf("%d\n",max(2, 2,1));

printf("%d\n",max(3, 5,9, 4));

printf("%d\n",max(4, 8 , 3,1,9));

return 0;

}

分别测试了1,2,3,4个数值,求取最大值的情况。 

测试结果:

1

2

9

9

c语言 怎么写 可变 参数函数

#include stdarg.h          //可变参数函数必要的头文件

#include stdio.h

long int sum(unsigned int argc,...)    //可变参数函数必须包含至少一个确定的参数

{

long int srt=0;

int va;

unsigned int i;

va_list vl;                        //用于指向可变参数列表

va_start(vl,argc);                 //初始化,va_start()调用的第一个参数是所编写的可变参数函数的最后一个确定的参数

for (i = 0; iargc; i++) {

srt+=(int)va_arg(vl,int);      //从参数列表按提取一个int类型的值参与相加运算

}

va_end(vl);                        //清理

return srt;

}

int main(int argc, char* argv[])

{

printf("%ld\n",sum(3,1,2,3));

return 0;

}


分享名称:c语言可变参数函数教学 c语言可变参数用法
文章源于:http://myzitong.com/article/doehjoc.html