可变参数函数c语言编程 c++可变参数函数

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

定义如下:

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:做网站、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的花都网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

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

举例说明:

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

{

//函数体

......

}

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

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

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语言中可变参函数实现,主要通过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语言如何定义一个可变参数函数 如何调用其输入的参数 分别

有专门的宏,处理可变参

void va_start( va_list arg_ptr, prev_param );

type va_arg( va_list arg_ptr, type );

void va_end( va_list arg_ptr );

一个简单的例子

void simple_va_fun(int i, ...)

{

va_list arg_ptr;

int j=0;

va_start(arg_ptr, i);

j=va_arg(arg_ptr, int);

va_end(arg_ptr);

printf("i=%d j=%d\bn", i, j);

return;

}

int main()

{

simple_va_fun(1);

simple_va_fun(1,2);

simple_va_fun(1,200);

return 0;

}


当前文章:可变参数函数c语言编程 c++可变参数函数
网页地址:http://scyanting.com/article/dohceps.html