可变参数

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移动几个字节。

posted @ 2019-05-06 22:45  jawide  阅读(300)  评论(0编辑  收藏  举报