C语言不定参数
作者:互联网
有时候会看到参数列表里写个省略号,这种写法叫不定参数。看上去精妙神秘,实际上也不难理解。
例如,有num根绳子,每根绳子切成div段,希望输出切完后每段的长度。当然这本来就是一个for的事情,为了演示而这么写。
#include<stdio.h>
#include<stdarg.h>
void cutRope(int num,int div,...)
{
va_list valist;
va_start(valist,div);
for(int i = 0;i < num;i++)
{
printf("%lf\n",va_arg(valist,double)/div);
}
va_end(valist);
}
int main()
{
cutRope(5,4,1.1,2.2,3.3,4.4,5.5);
return 0;
}
首先, include<stdarg.h>
然后,写一个函数,前几个参数是普通参数,最后一个则是省略号,代表跟不定数量的参数
函数内的使用则遵循如下规则:
先要定义一个va_list用于存储不定数量的参数,
然后使用va_start初始化这个列表。va_start第一个参数是列表名,第二个参数则是省略号前最后一个参数。
va_arg分别有valist和每个参数的数据类型。不用i来确定位置,每调用一次就会前进一个参数
使用完毕,va_end释放内存。
调用时就按照普通函数来调用,注意普通参数要写全。
标签:va,省略号,int,C语言,valist,参数,div,不定 来源: https://www.cnblogs.com/penicillium/p/15967061.html