首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

可变参数的函数

可变参数的获取 我先粘贴一下微软给我们的办法: 当编写可变参数函数时,必须用 va_list 类型定义参数指针,以获取可选参数。...va_list 类型被定义在头文件 stdarg.h 中。...现在引入两个函数实现上面的想法: void va_start(va_list argptr, lastparam); 该函数的第一个参数是一个va_list 类型的指针,第二个参数是可变参数函数中最后一个强制参数...实现了指针指向最后一个强制参数,该函数会初始化指针argptr type va_arg(va_list argptr, type); 其第一个参数是已经初始化完成的va_list指针,第二个参数则为可变参数的类型...,返回的参数就是当前va_list指针所指的可变参数,所以类型也跟传入的可变参数类型相同。

18310

va_start va_arg va_end 的原理与实例

} ◎研究: typedef char *    va_list;//va_list 等价于char*即字符指针。...{             int    count=0,i=first,sum=0;             va_list    maker;           //va_list    类型数据可以保存函数的所有参数...下面是 里面重要的几个宏定义如下: typedef char* va_list; void va_start ( va_list ap, prev_param ); /* ANSI...version */ type va_arg ( va_list ap, type ); void va_end ( va_list ap ); va_list 是一个字符指针,可以理解为指向当前参数的一个指针... 在调用参数表之前,定义一个 va_list 类型的变量,(假设va_list 类型变量被定义为ap); 然后应该对ap 进行初始化,让它指向可变参数表里面的第一个参数

1.9K30

C语言可变参数的原理和应用

概述 C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦; 即使采用C++,如果参数个数不能确定,也很难采用函数重载.对这种情况,有些人采用指针参数来解决问题 var_list可变参数介绍 VA_LIST...是在C语言中解决变参问题的一组宏,原型: typedef char* va_list; 其实就是个char*类型变量 除了var_list ,我们还需要几个宏来实现可变参数 「va_start、va_arg...define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) ) #define va_start(ap,v) ( ap = (va_list...va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )//下一个参数地址 #define va_end(ap) ( ap = (va_list..., 2, 4, 6, 8)); return; } int AveInt(int v, ...) { int ReturnValue = 0; int i = v; va_list

2.3K20
领券