首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

C可变参数函数兑现

2012-11-26 
C可变参数函数实现一直以来习惯了使用printf函数,但是对于可变参数没有深入研究过,觉得可变参数是一个神奇

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,这个变 量是指向参数的指针. 
2)然后用va_start宏初始化变量arg_ptr,这个宏的第二个参数是第 一个可变参数的前一个参数,是一个固定的参数. 
3)然后用va_arg返回可变的参数,并赋值给整数j. va_arg的第二个 参数是你要返回的参数的类型,这里是int型. 
4)最后用va_end宏结束可变参数的获取.然后你就可以在函数里使 用第二个参数了.如果函数有多个可变参数的,依次调用va_arg获 取各个参数. 


1楼On1yXiaoGuai6小时前
经典

热点排行