乱读天书, 不求甚解
周祎骏的个人云笔记
Toggle navigation
乱读天书, 不求甚解
主页
Linux:系统配置
Linux:用户管理
Linux:优化排错
Linux:进程调度
Linux:文件系统
Linux:网络
Linux:系统服务
Linux:安全
Linux:内核
容器:Docker
容器:containerd
容器编排:Kubernetes
IAC:Terraform
大数据:Hadoop
大数据:Zookeeper
大数据:Hbase
消息队列:rsyslog
消息队列:kafka
数据库:MySQL
数据库:MongoDB
搜索引擎:Elasticsearch
时序数据库:OpenTSDB
网站服务:Nginx
编程:Bash
编程:Perl
编程:Python
编程:C
编程:JAVA
编程:Rust
版本控制:gitlab
知识管理:docusaurus
常用小工具
关于我
标签
C 2.05 函数库stgarg.h
2018-06-17 08:23:04
41
0
0
admin
> 用于在参数个数未知时获得函数的参数 #基本介绍 **va_list**: 定义好的typedef,可以用来声明变量类型,用于以下三个宏。意义可以理解为指向各个参数的指针 **void va_start(va_list ap, last_arg)**:初始化va_list 的变量,lastarg是最后一个固定参数,即省略号之前的数。 **type va_arg(va_list ap, type)**:用某种类型来返回下一个参数,类型不对会导致错误。 **void va_end(va_list ap)**:做一些收尾工作。 *** #例子 ``` #include <stdio.h> #include <stdarg.h> void myprint(char *format,...) { va_list ap; char *p; va_start(ap,format); //第二个参数是最后一个定义好的参数 for(p=format;*p;p++) { if (*p != '%') //模仿printf,认百分号 { putchar(*p); continue; } switch(*++p) { case 'd': { int tmp_int = va_arg(ap,int); printf("int=%d",tmp_int); break; } case 's': { char *tmp_char; printf("char="); for(tmp_char = va_arg(ap,char *);*tmp_char;tmp_char++) putchar(*tmp_char); break; } default: putchar(*p); break; } } } main() { int a = 0; char *b = "123"; myprint("%d,%s",a,b); } ```
上一篇:
C 2.04 函数库stdlib.h
下一篇:
C 2.06 函数库sys/stat.h
文档导航