c语言,利用<stdarg.h> 里面的
typedef char* va_list;
void va_start ( va_list ap, prev_param ); /* ANSI version */
type va_arg ( va_list ap, type );
void va_end ( va_list ap );
#include <stdio.h>
#include <stdarg.h>
double Sum(int count, ...)// 必须有一个普通参数,“...”必须放在最右边
{
va_list valist;// 创建一个va_list类型的变量
double sum = 0;
va_start(valist, count);// 让可变参数列表知道第一个参数的位置,方便寻址后续的变参,一定要“...”之前的那个参数
int i = 0;
for (i = 0; i < count; i++)
{
sum += va_arg(valist, double); //告诉 valist 后面的变参分别是什么类型的
}
va_end(valist); // 释放valist
return sum;
}
int main(){
double x = Sum(2,5.6,34.6);//第一个参数count表示传入了多少可变参数
printf("%lf",x);
return 0;
}
c++,利用initializer_list
#include <initializer_list>
#include <string>
#include <iostream>
using namespace std;
void Log(initializer_list<string> list)
{
for (auto it = list.begin(); it != list.end(); ++it)
{
cout << *it << " ";
}
}
int main()
{
Log({ "Hello", "World", "C++" });
return 0;
}