可变参数列表
来源:互联网 发布:cookie统计uv存数据 编辑:程序博客网 时间:2024/05/20 19:46
模拟实现printf函数
#include<stdarg.h>
void print(char *format, ...)
{
va_list arg;
va_start(arg,format);
while(*format)
{
switch(*format)
{
case 's':
{
char* tmp =va_arg(arg,char*);
while(*tmp)
{
putchar(*tmp);
tmp++;
}
}
break;
case 'c':
{
putchar(va_arg(arg,char));
}
break;
default:
{
putchar(*format);
}
break;
}
format++;
}
va_end(arg);
}
int main()
{
print("val:s ccccc\n","hello",'w','o','r','l','d');
return 0;
}
va_list是在C语言中解决变参问题的一组宏,所在头文件:#include <stdarg.h>,用于获取不确定个数的参数
va_start,函数名称,读取可变参数的过程其实就是在堆栈中,使用指针,遍历堆栈段中的参数列表,从低地址到高地址一个一个地把参数内容读出来的过程·
va_arg,这个宏被展开成一个包含类型为type,值为ap的表达式。
va_end,配合使用,对程序负责。
#include<stdio.h>#include<stdarg.h>
void print(char *format, ...)
{
va_list arg;
va_start(arg,format);
while(*format)
{
switch(*format)
{
case 's':
{
char* tmp =va_arg(arg,char*);
while(*tmp)
{
putchar(*tmp);
tmp++;
}
}
break;
case 'c':
{
putchar(va_arg(arg,char));
}
break;
default:
{
putchar(*format);
}
break;
}
format++;
}
va_end(arg);
}
int main()
{
print("val:s ccccc\n","hello",'w','o','r','l','d');
return 0;
}
0 0
- Java可变参数列表
- 可变参数列表
- 关于可变参数列表
- 可变参数列表
- c++ 可变参数列表
- 可变参数列表
- cstdarg可变参数列表
- 可变参数列表
- java可变参数列表
- 可变参数列表
- Java 可变参数列表
- 可变参数列表
- C可变参数列表
- 可变参数列表
- C可变参数列表
- 可变参数列表
- /可变参数列表
- 可变参数列表
- PopWindow中添加listview,item点击事件解决
- 初学随机数
- JPEG文件编码格式说明_新
- 递归迭代和生成器
- JS判断是否为微信客户端
- 可变参数列表
- C++第3次上机实验报告(友元函数二题)
- 进程创建监控x86
- R语言︱ROC曲线——分类器的性能表现评价
- 临时对象
- PhoneGap极光推送插件使用
- Hibernate一对多关联映射(注解)
- 把字符串转换成整数
- HDU 4967 A simple water problem