1、原理
原理不是很难网上有很多,自己搜一下就明白了。
2、代码
void PrintLog (const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
vfprintf(stdout,fmt,ap);
va_end(ap);
}
3、解释
看到上面代码太简单了,也许有人会说,这有什么用?
在我看来最大的用处在于写日...
分类:
其他好文 时间:
2015-08-27 18:44:45
阅读次数:
185
object-c接收任意类型的参数:
/**
* 接收String类型的多个参数
* @param firsParam 第一个参数
*/
-(void)TestString:(NSString*)firsParam, ... {
va_list list;
va_start(list, firsParam);
NSString* param;
NSLog...
分类:
其他好文 时间:
2015-08-07 13:23:31
阅读次数:
158
//1.使用可变参数列表实现任意个数求平均值。
/*
#include<stdio.h>
#include<stdarg.h>
intaverage(intdata,...)//可变参数列表函数名(类型+形参名(几个参数),...)
{
intsum=0;
inti=0;
va_listavr;//avr可随意起va_listarg;
va_start(avr,data);//va_start..
分类:
其他好文 时间:
2015-08-04 23:16:32
阅读次数:
214
这几个函数和变量是针对可变参数函数的,什么是可变参数函数呢,最经典的莫过于printf和scanf,这两个函数的声明如下:1 int printf(const char *format, ...);2 3 int scanf(const char *format, ...); 这两个函数声明中...
分类:
编程语言 时间:
2015-08-03 22:26:24
阅读次数:
218
C语言允许使用可变参数列表,我们常用的printf函数即为可变参数函数,C标准库提供了stdarg.h为我们提供了这方面支持;该头文件提供了一些类型和宏来支持可变参数列表,包括类型va_list,宏va_start、va_arg、va_end; 可变函数参数定义方法:#include void...
分类:
编程语言 时间:
2015-07-26 22:23:17
阅读次数:
188
可变参数的函数原理其实很简单,而va系列是以宏定义来定义的,实现跟堆栈相关.我们写一个可变函数的C函数时,有利也有弊,所以在不必要的场合,我们无需用到可变参数。如果在C++里,我们应该利用C++的多态性来实现可变参数的功能,尽量避免用C语言的方式来实现。 由于在C语言中没有函数重载,解决不定数目函....
分类:
编程语言 时间:
2015-07-26 15:23:58
阅读次数:
108
首先先介绍一下可变参数表需要用到的宏:头文件:#includevoid va_start( va_list arg_ptr, prev_param );type va_arg( va_list arg_ptr, type );void va_end( va_list arg_ptr );va_lis...
分类:
编程语言 时间:
2015-07-11 22:54:33
阅读次数:
181
原文:http://blog.sina.com.cn/s/blog_590be5290100qhxr.htmlva_list是一个宏,由va_start和va_end界定。typedef char* va_list; // void va_start ( ...
分类:
其他好文 时间:
2015-07-01 17:31:31
阅读次数:
122
VA_LIST 是在C语言中解决变参问题的一组宏,定义在头文件下。VA_LIST的用法:(1)首先在函数里定义VA_LIST型的变量,这个变量是指向参数的指针(2)然后用VA_START宏初始化变量刚定义的VA_LIST变量,这个宏的第二个参数是第一个可变参数的前一个参数,是一个固定的参数。(3)然...
分类:
其他好文 时间:
2015-06-27 11:17:30
阅读次数:
122
在工作中经常碰到带有使用可变参数的函数目前C提供的可变参数的申明为 void function(const char *format, ...);这样就可以在function中使用可变参数C提供了几个宏用于使用可变参数 va_list va_start va_arg va_end其中va_...
分类:
其他好文 时间:
2015-06-24 10:34:19
阅读次数:
124