#include <stdio.h> #include <stdarg.h> /*【第一步】:定义一个使用省略号的函数原型 */ double sum(int lim, ...) { /*【第二步】:声明一个va_list类型的变量ap */ va_list ap; double sum = 0; // 用于保存参数之和 int i; /*【第三步】:使用va_start把变量ap初始化为参数列表 */ va_start(ap, lim); for (i = 0; i < lim; i++) { /*【第四步】: 使用va_arg访问参数列表。 这里第二个参数是double类型,传入的不定参数就应是double类型 */ sum += va_arg(ap, double); } /*【第五步】:使用va_end完成清理工作 */ va_end(ap); return sum; } int main(void) { double sum1 = 0, sum2 = 0; /* 计算 */ sum1 = sum(3, 1.1, 2.2, 3.3); sum2 = sum(6, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0); printf("sum1 = %f\n", sum1); printf("sum2 = %f\n", sum2); return 0; } 出处 //https://blog.csdn.net/zhengnianli/article/details/84504580
C语言 - 变参函数
#include <stdio.h> #include <stdarg.h> /*【第一步】:定义一个使用省略号的函数原型 */ double sum(int lim, ...) { /*【第二步】:声明一个va_list类型的变量ap */ va_list ap; double sum = 0; // 用于保存参数之和 int i; /*【第三步】:使用va_start把变量ap初始化为参数列表 */ va_start(ap, lim); for (i = 0; i < lim; i++) { /*【第四步】: 使用va_arg访问参数列表。 这里第二个参数是double类型,传入的不定参数就应是double类型 */ sum += va_arg(ap, double); } /*【第五步】:使用va_end完成清理工作 */ va_end(ap); return sum; } int main(void) { double sum1 = 0, sum2 = 0; /* 计算 */ sum1 = sum(3, 1.1, 2.2, 3.3); sum2 = sum(6, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0); printf("sum1 = %f\n", sum1); printf("sum2 = %f\n", sum2); return 0; } 出处 //https://blog.csdn.net/zhengnianli/article/details/84504580