使用varargs.h/stdarg.h 实现可变参数函数
来源:互联网 发布:淘宝甜品店推荐 知乎 编辑:程序博客网 时间:2024/05/02 04:33
需求: 自己设置一个形如 printf()这样的函数,其函数的参数个数是可变的。第一个参数为字符串,里面有其他形参的数据类型信息。
参考代码如下:
#include<stdio.h>
#include<varargs.h>
void myPrintf (va_alist) va_dcl
{
va_list ap;
char *format;
va_start(ap);
format = va_arg(ap,char *);
vfprintf(stdout,format,ap);
va_end(ap);
}
解释:
定义可变参数函数时,,在函数定义的时候需要使用va_alist与va_dcl宏。
va_list ap:这句可以这么理解,ap中将存放所有的形参列表。ap通过va_start(ap)来初始化,使得ap中存在形参。 之后每次调用va_arg(),ap都会自动更新。
va_start:用来初始化形参列表
va_arg(),作用是对一个特定类型额形参列表进行存取。
这里我们使用了vprintf这样的函数,这样的函数可以直接使用va_list类型作为形参。
我们也可以使用stdarg.h进行可变参数函数
再举一个例子:求一系列int数的和。
#include<stdio.h>
#include<stdarg.h>
int sum(unsigned int num, ...)
{
va_list ap;
int sum =0;
va_start(ap,num);
while(num>0)
{
int t;
num--;
t = va_arg(ap,int);
sum+=t;
}
return sum;
}
其中第一个形参代码共有几个数需要求和。va_start()有两个形参。 va_arg()需要显示地提供形参类型。
- 使用varargs.h/stdarg.h 实现可变参数函数
- 用库函数stdarg.h实现函数参数的可变
- stdarg.h编写可变参数函数
- stdarg.h vs varargs.h
- 可变参数处理,stdarg.h
- 可变参数列表<stdarg.h>
- 可变参数列表的宏和<stdarg.h>实现函数的可变参数列表
- stdarg.h——用于函数接受可变参数
- 详解stdarg.h文件(可变参数函数的操作)
- [C语言]利用stdarg.h来实现可变参数列表
- stdarg.h:ANSI版的varargs.h
- C库<stdarg.h>实现可变参函数
- c可变参数和stdarg.h
- 可变参数(C语言):stdarg.h
- 可变参数列表通过宏来实现(头文件stdarg.h)
- CC++可变参数stdarg.h中的余数运用
- 可变参数函数stdarg
- 函数参数不确定时用cstdarg(stdarg.h)
- 第1章 Oracle关系数据库 Oracle 11g完全学习手册
- 关于计算Java程序运行时间
- 面向对象JAVA多态性
- android XPath 解析xml
- ORACLE运营维护手册
- 使用varargs.h/stdarg.h 实现可变参数函数
- Centos/Rhel6 GDM 和 XManager 4
- 修改Weblogic端口号
- ASP.NET-AspNetPager分页控件完整使用方法
- 微软历史——VB
- 防御编程与防御陷阱
- 程序员的国外网站
- 今天开始写博客,日记也好,学习心得也罢,更重要的是记录并督促自己前进
- 梓轩dm宣传单设计