在日常写函数的时候有时候需要用到可变参数,然后学习了一下可变参数的使用 。
【使用<stdarg.h>实现可变参数,av_list的使用】先介绍三个函数与一个变量类型:使用这个库的前提是需要使用stdio.h 与.h
类型:是一个char * 类型的字符串指针,
它用来指向我们参数的地址 。
文章插图
接下来我们介绍需要使用的三个函数 。原型在下图中展示 。
(ap, x):是一个宏函数,ap应该就是args参数指针,x是第一个参数
执行start之后ap会自动偏移到第二个参数的地址 。
(ap, t):t为参数类型,如果t是char 那么它会返回一个字符,如果是cahr*会返回字符串首地址,我们可以根据这个t来遍历,我们输入的,对不同类型的数据进行处理,其实也可以用输入输出流格式化提取数据或者用正则表达式,但是遇到了就玩玩 。
(ap):将ap置为空,参数指针置为空 。
下面随便写个例子玩玩 。
#include #include void myFormat(const char *fmt, ...){va_list arglist;//参数指针va_start(arglist, fmt);//指向第二个参数while(*fmt != '\0'){if(*fmt == '%')//格式化输出的符号{switch(*(++fmt)){case 'd':printf("%d",(va_arg(arglist, int))); break;case 'c':break;case 's':printf("%s",(va_arg(arglist,char *))); break;case 'x':break;default: printf("default");}}else {printf("%c",*fmt);}fmt++;}va_end(arglist);}int main(int agc,char * agv[]){myFormat("%s%d\n","VA_ARG",888);return 0;}
运行结果 。
在单片机里面用的比较多吧 。应用开发不怎么用 。
- FFmpeg AVPacket 剖析以及使用
- 一体式水冷需要维护吗,一体式水冷能使用多久?
- 1、学习三极管的使用
- PCL 使用 pcl::visualization::PCLVisualizer
- gcc生成静态库.a和动态库.so和OpenCV3.4.11的安装及使用示例
- 在Verilog语言中,使用门级建模设计一个由1位全加器组成的4位全加器
- 基于51单片机实现时间显示及闹钟设置
- 山东中石药业有限公司耕葩草甘磷使用方法?
- 荣耀手机打破这项吉尼斯纪录,只用了10小时,网友:真中国荣耀! 手机使用最久吉尼斯记录
- 海运天价,是媒体操作还是真实现状?有托运人买单就会持续上涨? oocl历史之最