c语言函数参数个数不确定 c语言函数参数个数不确定的原因

请问c语言编写函数时不确定 参数数量时该怎么办在函数定义的时候就必须写形参名了 。声明的时候不需要,因为编译器还用不到,只要知道相应位置是个啥类型的就行了
急!请高手指教c如何定义一个参数个数不确定的函数?VA_LIST是在C语言中解决变参问题的一组宏,所在头文件:#include stdarg.h,用于获取不确定个数的参数 。
VA_LIST的用法:
首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针;
然后用VA_START宏初始化刚定义的VA_LIST变量;
然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型(如果函数有多个可变参数的,依次调用VA_ARG获取各个参数);
最后用VA_END宏结束可变参数的获取 。
以下是一个定义一个参数个数不确定的函数的简单例子:
#include cstdarg
#include iostream
using namespace std;
double average ( int num, ... )
{
va_list arguments;// A place to store the list of arguments
double sum = 0;
va_start ( arguments, num );// Initializing arguments to store all values after num
for ( int x = 0; xnum; x)// Loop until all numbers are added
sum= va_arg ( arguments, double ); // Adds the next value in argument list to sum.
va_end ( arguments );// Cleans up the list
return sum / num;// Returns some number (typecast prevents truncation)
}
【c语言函数参数个数不确定 c语言函数参数个数不确定的原因】int main()
{
cout average ( 3, 12.2, 22.3, 4.5 ) endl;
cout average ( 5, 3.3, 2.2, 1.1, 5.5, 3.3 ) endl;
}
C语言怎么实现函数不定参数C语言中定义了va_list, va_start( ), va_arg( ), va_end( ) 这样一组宏来处理可变参数问题 。
可以参考printf的声明 , 创建自己的实现函数 。示例:
#includestdio.h
#includestdarg.h
void va_fun(int start,...)
{
va_list arg_ptr;
int nArgValue = https://www.04ip.com/post/start;
int nArgCount = 1;
va_start(arg_ptr,start);
while(nArgValue != -1)
{
printf("arg %d is:%d/n",nArgCount,nArgValue);
nArgValue=https://www.04ip.com/post/va_arg(arg_ptr,int);
nArgCount;
}
return;
}
main()
{
va_fun(5,1,7,-1);
printf("................/n");
va_fun(2,4,-1);
printf("................/n");
va_fun(-1);
printf("................/n");
//va_fun(); 可变参数函数最少要有一个参数 。
}
关于c语言函数参数个数不确定和c语言函数参数个数不确定的原因的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读