c语言 可变参数传递 va_list使用

通过使用VA_LIST可以实现向函数传递不同数目的参数。

#include <stdarg.h>
#include <iostream>
#include <string>
using namespace std;
#pragma argsused
//函数A 传递若干个整形变量
void Funca(int n,...)
{
 //定义获取变量的结构体
 va_list va_ptr;
 //开始从头部开始获取变量
 va_start(va_ptr,n);
 for(int iIndex = 0; iIndex < n; iIndex++)
 {
  //定义获取变量的类型
  int nArgValue = va_arg(va_ptr,int);
  cout<<"value is"<<nArgValue<<endl;
 }
 //结束获取变量
 va_end(va_ptr);
}
//函数b 获取不定数目的字符串
void Funcb(int num,...)
{
 va_list va_ptr;
 va_start(va_ptr,num);
 char *sValue;
 for(int iIndex = 0; iIndex < num; iIndex ++)
 {
  sValue = va_arg(va_ptr,char*);
  cout<<"value is"<<sValue<<endl;
 };
 va_end(va_ptr);
}
int main(int argc, char* argv[])
{
 char c;
 Funca(3,1,2,3,4,5,6);
 Funcb(2,"b","c","-1");
 c = getchar();
 return 0;
}
//---------------------------------------------------------------------------

你可能感兴趣的:(c,va_list)