首页 > 技术文章 > [c/c++]可变参数的使用

zhengxl5566 2018-03-22 18:03 原文

一、可变参数简介

当一个函数需要传递未知个数的参数时,就需要用到可变参数,

比如常见的printf()函数,输出多个变量:

printf("print para1:%d ,para2 :%d",para1,para2);

二、相关函数

va_list  用来存储可变参数的数据类型

type va_arg (va_list ap, type) 获取下一个参数

void va_start (va_list ap, paramN); 初始化可变参数列表

void va_end (va_list ap); 释放资源

 

/* va_start example */
#include <stdio.h>      /* printf */
#include <stdarg.h>     /* va_list, va_start, va_arg, va_end */

void PrintFloats (int n, ...)
{
  int i;
  double val;
  printf ("Printing floats:");
  va_list vl;
  va_start(vl,n);
  for (i=0;i<n;i++)
  {
    val=va_arg(vl,double);
    printf (" [%.2f]",val);
  }
  va_end(vl);
  printf ("\n");
}

int main ()
{
  PrintFloats (3,3.14159,2.71828,1.41421);
  return 0;
}

 

 

 

三、注意事项:

1、如果调用了va_start,在结束时必须调用va_end来释放资源

2、如果va_list ap被va_start初始化过,再次初始化前需要先调用va_end释放一下

 

推荐阅读