可变参数
c语言中的可变参数由头文件 stdarg.h 实现。
应用实例
1 int nsum(int num,...)//实现num个整数的和 2 { 3 va_list valist;//创建一个变量储存参数的地址表列 4 int sum; 5 int i; 6 7 va_start(valist,num);//将num个参数的地址储存到valist中 8 9 for(i=0;i<num;i++) 10 { 11 sum+=va_arg(valist,int);//返回valist指向的参数的值,然后让valist指向的地址向后移动sizeof(int)个字节 12 } 13 14 va_end(valist);//清除valist的内存空间 15 16 return sum; 17 }
1. 实现可变参数一般都要用到num来指定参数的个数,可变参数用省略号"..."表示。
2. 必须要创建一个va_list型的变量来储存地址表列。
3. 大致分为三部分,初始化,调用,释放。
ps:
va_start是将前num个参数的地址存放到valist中,而不是从右向左读取参数。
va_arg是先返回当前valist指向的参数的值,然后在让valist指向下一参数。
可变参数的类型可以多种多样,只是在调用参数的值时要注意,valist移动几个字节。