通过使用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; } //---------------------------------------------------------------------------
本文出自 “风清扬song” 博客,请务必保留此出处http://2309998.blog.51cto.com/2299998/1423699