C语言中: va_list 解决变参问题
来源:互联网 发布:商家入驻小程序源码 编辑:程序博客网 时间:2024/05/11 20:35
VA_LIST 是在C语言中解决变参问题的一组宏,所在头文件:#include <stdarg.h>
,用于获取不确定个数的参数
——摘自百度百科
va_list 是一个字符指针,在代码中可以理解为指向当前参数的一个指针,这里有几个与 va_list 相关的常见的函数
void va_start ( va_list ap, param );//对va_list变量进行初始化,将ap指针指向参数列表中的第一个参数type va_arg ( va_list ap, type ); //获取参数,类型为 type 类型,返回值也为 type 类型int vsprintf(char *string, char *format, va_list ap);//将ap(通常是字符串) 按format格式写入字符串string中void va_end ( va_list ap ); //回收ap指针
所以解决变参问题就分为四步:
(1)首先在函数里定义 va_list 型的变量 ap,即指向参数的指针;(2)然后用 va_start 函数初始化刚定义的 ap 指针;(3)然后用 va_arg 返回可变的参数即 va_arg(va_list ap, type)(4)最后用 va_list 回收 va_list 指针
eg.:求多个数的最大值:
code:
#include <stdio.h>#include <stdlib.h>#include <stdarg.h>int Max(int ss, ...){ va_list ap; int ret = -999999, tmp; va_start(ap, ss); for(int i=0; i<ss; i++){ tmp = va_arg(ap, int); if(ret < tmp) ret = tmp; } va_end(ap); return ret;}int main(){ int cnt = 5; printf("%d\n",Max(cnt, 2, 3, 4, 5, 6)); return 0;}
0 0
- C语言中: va_list 解决变参问题
- VA_LIST 是在C语言中解决变参问题的一组宏
- C语言中解决变参问题的几个宏
- va_list解决c中变参问题
- va_list-关于方法变参的问题
- C语言变参问题
- c语言变参函数的vsprintf与va_list的用法
- C语言函数变参问题
- 变参函数和va_list
- C++ 变参va_list 示例
- c语言变参
- 解决变参数问题:va_list、va_start、vsnprintf、va_end的使用方法和实例
- C语言中可变参数的处理va_list
- C语言中可变参数的用法va_list
- C语言细节:va_list,...,##, #等
- c语言变参函数-
- C语言变参技术
- C语言变参技术
- 插件化之插件Service 新的Hook方法
- 数据业务建立流程之APN参数的激活
- source tree 如何忽略文件
- MP4学习(九)ts-mp4源码阅读(7)mdia box的解析
- 醉了,第一个递归函数---阶乘
- C语言中: va_list 解决变参问题
- 论Nodejs PK 老派后台语言,与个人生活与选择心得!
- elasticsearch中的curl命令
- 移动端热修复方案——阿里百川HotFix
- iOS中的runtime应用
- URL编码
- 信息检索笔记 第1周
- 20170228. 特征点相关
- ScrollView嵌套RecyclerView,顶部布局被顶出的问题;ListView等子布局里包含CheckBox,单行点击事件消失