嵌入式技术
有时,您可能会碰到这样的情况,您希望函数带有可变数量的参数,而不是预定义数量的参数。C 语言为这种情况提供了一个解决方案,它允许您定义一个函数,能根据具体的需求接受可变数量的参数。下面的实例演示了这种函数的定义。 intfunc(int, 。.. ) { 。 。 。 }intmain() { func(2, 2, 3); func(3, 2, 3, 4); }
#include《stdio.h》
#include《stdarg.h》doubleaverage(intnum,。..)
{ va_listvalist;
doublesum = 0.0;
inti; /* 为 num 个参数初始化 valist */
va_start(valist, num); /* 访问所有赋给 valist 的参数 */
for(i = 0; i 《 num; i++) {
sum += va_arg(valist, int); } /* 清理为 valist 保留的内存 */
va_end(valist);
returnsum/num; }intmain() { printf(“Average of 2, 3, 4, 5 = %fn”, average(4, 2,3,4,5));
printf(“Average of 5, 10, 15 = %fn”, average(3, 5,10,15)); } 当上面的代码被编译和执行时,它会产生下列结果。应该指出的是,函数 average() 被调用两次,每次第一个参数都是表示被传的可变参数的总数。省略号被用来传递可变数量的参数。
Average of 2,3,4,5=3.500000Average of 5,10,15=10.000000
审核编辑
全部0条评论
快来发表一下你的评论吧 !