C中的可变参数列表用法总结
来源:互联网 发布:网络彩票平台出租 编辑:程序博客网 时间:2024/04/29 06:49
首先头文件需要声明<stdarg.h>
函数的参数列表声明类似为char* fun(char* first,...)
1.函数定义中首先定义一个va_list类型的参数列表;
2.通过va_start宏进行参数列表的初始化,该宏的第一个参数为第一步定义的参数列表变量,第二个参数可变参数列表的前一个参数,也就是最后一个固定参数。随后参数列表当前指向的参数就是可变列表的第一个参数。
3.通过va_arg扫描参数列表,第一个参数为第一步定义的参数列表变量,第二个参数为指定的参数类型。
4.通过va_end终止扫描(作用待探讨)。
下面是一个实例程序,摘自C语言的公共主页:
下面是一个把任意个字符串连接起来的函数, 结果存在malloc 的内存中:#include <stdlib.h> /* 说明malloc, NULL, size_t */
#include <stdarg.h> /* 说明va_ 相关类型和函数*/
#include <string.h> /* 说明strcat 等*/
char *vstrcat(const char *first, ...)
{
size_t len;
char *retbuf;
va_list argp;
char *p;
if(first == NULL)
return NULL;
len = strlen(first);
va_start(argp, first);
while((p = va_arg(argp, char *)) != NULL)
len += strlen(p);
va_end(argp);
retbuf = malloc(len + 1); /* +1 包含终止符\0 */
if(retbuf == NULL)
return NULL; /* 出错*/
(void)strcpy(retbuf, first);
va_start(argp, first); /* 重新开始扫描*/
while((p = va_arg(argp, char *)) != NULL)
(void)strcat(retbuf, p);
va_end(argp);
return retbuf;
}
调用如下:
char *str = vstrcat("Hello, ", "world!", (char *)NULL);
- C中的可变参数列表用法总结
- C语言中的可变参数列表
- C语言中的可变参数列表
- C可变参数列表
- C可变参数列表
- 简单记录下C语言中的可变参数列表两种用法
- C/C+可变参数列表
- C语言中的可变参数列表使用详解(转)
- c语言中函数中的可变参数列表
- C/C++可变参数列表
- c语言:可变参数列表
- 【C语言】可变参数列表。
- C可变参数列表函数
- C语言,可变参数列表
- C语言可变参数列表
- 【C】可变参数列表剖析
- C语言-可变参数列表
- C语言可变参数列表
- 操作系统3本实践书
- openstack创建instance的流程
- JavaScript 正则表达式 验证整数、小数、实数、有效位小数最简单
- C#--封装
- hdu 1223 Order Count
- C中的可变参数列表用法总结
- 在web.config中配置session的生命周期
- MySQL语句
- 整理java代码常见应用
- Ubuntu中 iostream.h: No such file or directory 的解决
- 类中的构造函数
- packages/providers/contactsprovider/src/com/androidproviders/contacts/ContactsDatabaseHelpher.java
- 访问修饰符
- 手写可执行程序