#include
#include int Max(int n, ...)
{
int i = 0;
int max = 0;
va_list arg;
va_start(arg, n); for (i = 0; i < n; i++)
{
int val = va_arg(arg,int);...
分类:
其他好文 时间:
2015-05-20 20:42:18
阅读次数:
156
在学习C语言的过程中,大家是不是和我一样,认为printf是一个神一样的函数?他可以接受不同数目,不同类型的参数,他到底是怎么实现的呢?
让我们去看一下它的源代码:
printf源代码:
int printf(const char *fmt,...)
{
int res;
va_list arg;
va_start(arg,fmt);
res = vprintf(fmt...
分类:
其他好文 时间:
2015-05-19 22:46:02
阅读次数:
143
stdarg宏:
可变参数列表是通过宏来实现的,这些宏定义于stdarg.h头文件中,它是标准库的一部分。这个头文件声明一个类型va_list
和三个宏va_start、va_arg和va_end。我们可以声明一个类型为va_list的变量,与这几个宏配合使用,访问参数。
声明一个va_list
类型的变量arg,它用于访问参数列表的未确定部分。这个变量是调用va_start来初始化...
分类:
编程语言 时间:
2015-05-15 09:10:19
阅读次数:
117
求多个数中的最大值要求用可变参数列表:
代码如下:
#include
#include
int Max(int n,...)
{
int i=0;
int max=0;
va_list arg;
va_start(arg,n);
for(i=0;imax)
{
...
分类:
编程语言 时间:
2015-05-14 23:50:14
阅读次数:
192
va_list arg 访问参数列表未确定部分
va_start(arg,val);//将 arg_ptr 设置为传递给该函数参数列表的第一个可选参数 arg是声明的变量名,val是已确定参数列表最后一个参数
va_arg(arg,int);//从 arg_ptr给出的位置检索 type 的值,并将 arg_ptr 指向列表中的下一个参数,使用 type 的范围确定下一个参数开始的...
分类:
其他好文 时间:
2015-05-13 19:53:49
阅读次数:
125
//头文件
va_list arg 访问参数列表未确定部分
va_start(arg,val);//将 arg_ptr 设置为传递给该函数参数列表的第一个可选参数
arg是声明的变量名,val是已确定参数列表最后一个参数
va_arg(arg,int);//从 arg_ptr给出的位置检索 type 的值,并将 arg_ptr 指向列表中的下一个参数,使用 type 的范围确定下一个...
分类:
其他好文 时间:
2015-05-12 13:38:58
阅读次数:
120
c语言中用可变参数列表的原因cpp文件中参数可以初始化,则实参中用几个参数写几个,但是c中形参不可以初始化,所以引出可变参数列表,头文件为stdarg.h,使用宏stdarg
va_list类型 arg变量 eg:va_list arg
宏stdarg使用了三种宏
va_start(arg,val)初始化
va_arg(arg,int)读取
va_end(arg)结束...
分类:
其他好文 时间:
2015-05-12 13:36:08
阅读次数:
136
C函数要在程序中用到以下这些宏:
void va_start( va_list arg_ptr, prev_param );
type va_arg( va_list arg_ptr, type );
void va_end( va_list arg_ptr );
va_list:用来保存宏va_start、va_arg和va_end所需信息的一种类型。为了访问变长参...
分类:
编程语言 时间:
2015-05-12 09:27:33
阅读次数:
133
va_list arg;声明一个va_list 类型的变量arg,它用于访问参数列表的未确定部分;
va_start(arg,val);第一个参数是va_list的变量名,第二个参数是不确定参数的前一个参 数;
a_arg(arg,int);返回这个参数的值,并使用var_arg指向下一个可变参数,第一个参数是
...
分类:
其他好文 时间:
2015-05-11 21:53:08
阅读次数:
141
1 void plog(const char *fmt, ...) 2 { 3 va_list arg; 4 char pbString[256]; 5 va_start(arg, fmt); 6 vsprintf(pbString, fmt, arg); //若此行和下行改为:done = fp....
分类:
其他好文 时间:
2015-05-05 23:13:45
阅读次数:
165