C语言中的可变参数
来源:互联网 发布:决战紫禁之巅 知乎 编辑:程序博客网 时间:2024/06/12 21:35
1.包含头文件 :<stdarg.h>,它声明了一种类型,并定义了(C89)几个宏:va_start, va_arg和va_end。C99中还增加了一个类似函数的宏va_copy。
2.要想获取可变参数。必须声明va_list类型的变量来接收可变参数。
va_list ap;
然后将这个“指针”指针到开头。即第一个可变参数:va_start(ap, n);这里的n为可变参数列表中的第一个参数的名字。
要想获取下一个可变参数,即可用:va_arg(ap, int)来获取,第二个参数为可变参数的类型,这个位置“指针”会自动向前到下一个参数处。
在函数返回之前,要求用语句va_end(ap);进行“清理”。(如果不返回,函数可以调用va_start并且再次遍历参数列表);
举个实际的例子:编写一个可变的参数列表的函数,求其最大值:
#include <stdio.h>#include <stdlib.h>#include <stdarg.h>int max_int(int n, ...);int main(void){ int largest = max_int(1, 8, 2, 6, 4, 10, -1); printf("max is %d\n", largest);exit(EXIT_SUCCESS);}int max_int(int n, ...){ va_list ap; int i; int current; int largest; va_start(ap, n); largest = n; //这里判断!=-1,所以,在调用时,必须要以-1为结尾。呵呵。 while ( (current = va_arg(ap, int)) !=-1) { if ( current > largest ) { largest = current; } } va_end( ap ); return largest;}
如果没有出现什么问题的话,会打印出:
- C语言中的可变参数
- C语言中的可变参数
- C语言中的可变参数
- C语言中的可变参数
- C语言中的可变参数
- c语言中的可变参数
- C语言中的可变参数
- C语言中的可变参数
- C语言中的可变参数
- c语言中的可变参数
- C语言中的可变参数。
- C语言中的可变参数。
- C语言中的可变参数
- C语言中的可变长参数(转载)
- C语言中的可变参数函数
- C语言中的可变参数函数
- C语言中的参数可变函数
- va_list : C语言中的可变参数
- 列表下拉/上拉刷新:(三)强制刷新
- 什么是依赖注入
- cmd进入指定的目录
- Spring学习笔记
- 用pc发短息
- C语言中的可变参数
- wm手机设置wifi 的IP地址
- 英特尔赵军:核芯显卡是未来发展趋势
- Android APK反编译详解(附图)
- java.lang.IllegalArgumentException: Document base X:\X\X does not exis
- 采药 解题报告
- The ResourceConfig instance does not contain any root resource classes
- 英特尔核芯显卡性能详细测试
- Android中获取字符串长度、宽度(所占像素宽度),手动设定字符串换行