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); // 释放valistreturn 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;
}