VA_LIST的用法和问题——解决未知参数个数问题

C++定义的函数是可以支持函数参数个数不确定的。VA_LIST是在C++语言中解决变参问题的一组宏,所在头文件:#include <stdarg.h>,用于获取不确定个数的参数同时使用"…"代替多个参数,调用时只需要根据需要传入多个参数。

VA_LIST的用法:

[转载]

  1. 首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针;
  2. 然后用VA_START宏初始化刚定义的VA_LIST变量;
  3. 然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型(如果函数有多个可变参数的,依次调用VA_ARG获取各个参数);
  4. 最后用VA_END宏结束可变参数的获取。

遍历可变参数(VA_LIST)

[转载]

  1. 传入的时候指定参数个数

     void arg_cnt(int cnt, ...)
     {
         int value=0;
         int i=0;
         int arg_cnt=cnt;
         va_list arg_ptr; 
         va_start(arg_ptr, cnt); 
         for(i = 0; i < cnt; i++)
         {
             value = va_arg(arg_ptr,int);
             printf("value%d=%d\n", i+1, value);
         }
         va_end(arg_ptr);
     } 
    

    调用方法:“arg_cnt(4,1,2,3,4);”,第一个参数为传入参数个数。

  2. 传入的时候指定特殊的字符以标示为结

     int demo( char msg, ... )
     {
         va_list argp;
         int argno = 0;
         char para;
         va_start( argp, msg );
         while (1)
         {
             para = va_arg( argp, char);
             if ( strcmp( para, "") == 0 )
                 break;
             printf("Parameter #%d is: %s\n", argno, para);
             argno++;
         }
         va_end( argp );
     
         return 0;
     } 
    

    调用方法:“demo(“DEMO”, “This”, “is”, “a”, “demo!”, “”);”,最后一个参数标示结束。

[转载]va_list、va_start、va_arg、va_end的原理与使用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值