其他分享
首页 > 其他分享> > C语言不定参数

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