参数列表必须以一个负值结尾,提示列表的结束。
#include<stdarg.h> #include<stdio.h> /* **从参数列表中返回最大值,这个参数列表是以一个负数结尾的。 */ int max_list(int first_arg, ...) { va_list var_arg; int max = 0; /* **如果条件满足的话,将它作为最大值保存。 */ if (first_arg >= 0) { int this_arg; max = first_arg; /* **依次获取剩余的参数,如果这比当前的max大,将它保存为最大值 */ va_start(var_arg, first_arg); while ((this_arg = va_arg(var_arg, int)) >= 0) { if (this_arg > max) { max = this_arg; } } va_end(var_arg); } return max; } int main() { int max = max_list(1, 2, 3, 4, 5, 6, 7, 8, 9, -1); printf("%d\n", max); return 0; }
本程序在VS2017下运行通过。