如何写——可变参数函数

总共分为5个记忆点:函数原型声明写法、定义参数变量、初始化参数变量(的偏移)、给类型取参数、取参数完毕

函数原型声明写法type fun(xx,xx,xx,int arg_num,...){  }

定义参数变量 va_list arg;

初始化参数变量(的偏移)va_start(arg,arg_num);

给类型取参typevalue value = va_arg(arg,ypevalue);

取参数完毕 va_end(arg);

使用如下程序所示:

<span style="font-family:Courier New;">#include <stdio.h>
#include <stdarg.h>

long sum(int arg_num,...);
int main(void)
{
      printf("12+200+43+27 = %ld\n",sum(4,12,200,43,27));
      printf("5+3 = %ld\n",sum(2,5,3));

      return 0;
}
//这个和int main(int argc , char ** argv) 的道理是一样的;这里的arg 指针相当argv 字符串数组指针,只不过
//需要用va_start 来初始化arg指针,使之指向参数列表(字符串数组) ,然后用va_arg 来访问而已
long sum(int arg_num,...)                                     
{                                          
      long s = 0,n;
	  
      va_list arg;                                //定义参数指针
      
      va_start(arg,arg_num);            //用... 前面的最后一个参数来初始化参数指针arg ,最好此参数为可变参数的个数,
      for(n = 0; n<arg_num; n++)    //这样可用于确定可变参数个数
      {
      	   s += va_arg(arg,int);           //提取参数
      }
	  
      va_end(arg);
	  
      return s;
}</span>




注意:main()函数自己不可用可变参数va_arg 了,它有它自己的机制,它用命令行参数而已
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值