c/c++函数可变参数的实现

c语言,利用 里面的

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 
#include 
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/c++函数可变参数的实现_第1张图片
c++,利用initializer_list

#include 
#include 
#include 
 
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;
}

c/c++函数可变参数的实现_第2张图片

你可能感兴趣的:(c++,c语言,c++,开发语言)