C语言 <stdarg.h> va_end() 宏

  • 描述

    C库宏void va_end(va_list ap)允许具有可变参数的函数使用va_start宏返回。如果从函数返回之前未调用va_end,则结果不确定。
  • 声明

    以下是va_end()宏的声明。
    
    void va_end(va_list ap)
    
    参数
    • ap - 这是先前由va_start在同一函数中初始化的va_list对象。
  • 返回值

    该宏不返回任何值。
    示例
    以下示例显示va_end()宏的用法-
    
    #include<stdarg.h>
    #include<stdio.h>
    
    int mul(int, ...);
    
    int main () {
       printf("15 * 12 = %d\n",  mul(2, 15, 12) );
       
       return 0;
    }
    
    int mul(int num_args, ...) {
       int val = 1;
       va_list ap;
       int i;
    
       va_start(ap, num_args);
       for(i = 0; i < num_args; i++) {
          val *= va_arg(ap, int);
       }
       va_end(ap);
     
       return val;
    }
    
    尝试一下
    让我们编译并运行以上程序以产生以下结果-
    
    15 * 12 =  180