可变参数的疑问
程序代码:
#include <stdio.h> #include <stdarg.h> double average(int num,...) { va_list valist; int sum = 0.0; int i; /* 为 num 个参数初始化 valist */ va_start(valist, num); /* 访问所有赋给 valist 的参数 */ for (i = 0; i < num; i++) { sum = va_arg(valist, int); printf("sum = %d\n", sum); } /* 清理为 valist 保留的内存 */ va_end(valist); return sum/num; } int main() { printf("Average of 2, 3, 4, 5 = %d\n", average(4, 2,3,4,5)); }
问题:
1、va_list valist; 其中的 valist; 是变量吧?
2、printf("Average of 2, 3, 4, 5 = %d\n", average(4, 2,3,4,5)); 打印后,它的值怎么会是 “Average of 2, 3, 4, 5 = 4202508” ? 这个4202508怎么出来的?