C可变参数函数实现
一直以来习惯了使用printf函数,但是对于可变参数没有深入研究过,觉得可变参数是一个神奇的技术。想研究研究看可变参数的使用和原理。目前C提供的可变参数的申明为
#include <cstdarg>#include <cstdio>#include <iostream>using namespace std;void Output(char *szFormat, ...){va_list argptr;char szBuf[1024];va_start(argptr, szFormat);vsprintf_s(szBuf,szFormat, argptr);cout<<szBuf<<endl;va_end(argptr);}//output the argsint ArgsCount(char *szFormat, ...){va_list argptr;int argNomber = 0;char *szBuf;va_start(argptr,szFormat);while (1){szBuf = va_arg(argptr,char*);if(strcmp(szBuf,"0") == 0)break;cout<<"the parameter #"<<argNomber<<" is "<<szBuf<<endl;argNomber++;}va_end(argptr);return argNomber;}int main(){char czA[] = "wql";char czB[] = "hello";Output("Who are you? i am %s, %s",czA,czB);ArgsCount("Hello", "Who","are","you","i am","wql", "0");return 0;}1)首先在函数里定义一个va_list型的变量,这里是arg_ptr,这个变 量是指向参数的指针.