可变参数列表是通过stdarg.h内的宏来实现的: 类型 va_list 三个宏: va_start va_arg va_end 我们可以声明一个va_list变量,与这三个宏配合使用。 可变参数必须要有一个命名参数,因为可变参数是通过栈来实现的,函数中的最右边的参数最先入栈。 其栈结构为 0x1f ...
分类:
其他好文 时间:
2016-08-18 01:15:57
阅读次数:
222
1.C标准库中有一组宏,可用于建立可变参数函数(接受数量可变参数的函数) 举例: 2.va_end、va_start是宏,不是函数 3.可变参数函数中必须有普通参数,这样才能把他的名字传给va_start 4.读取参数时不能超出给出的函数个数 5.需要知道要读取的参数的类型 ...
分类:
其他好文 时间:
2016-07-31 15:46:04
阅读次数:
125
可变参数函数实现 va_list,va_start,va_arg,va_end va可变参数意思,variable-argument。 1. 头文件及实现 linux中定义在gcc头文件中,stdarg.h中。 加builtin前缀的都是编译器内置函数,在机器上找不到源代码。 GCC provide ...
分类:
其他好文 时间:
2016-06-11 17:22:46
阅读次数:
286
1.使用可变参数列表实现任意个数求平均值。#include<stdio.h>
#include<stdarg.h>
floataverage(intval,...)
{
inti=0;
floatsum=0.0;
floatave=0.0;
va_listarg;
va_start(arg,val);
for(i=0;i<val;i++)
{
sum+=va_arg(arg,int);
}
va_end(arg);
a..
分类:
其他好文 时间:
2016-03-23 06:48:00
阅读次数:
246
一个函数在不同的时候接受不同数目的参数。stdarg宏可变参数列表是通过宏来实现的,这些宏定义于stdarg.h头文件中。这个头文件声明了一个类型va_list和三个宏---va_start,va_arg,va_end。va_list用于声明变量的类型。va_start准备访问可变参数。va_arg用于访问参数列表的未确定..
分类:
其他好文 时间:
2015-11-29 06:55:18
阅读次数:
140
可变参数列表是通过宏来实现的,这些宏定义于stdarg.h头文件中,是标准库一部分,这个头文件声明一个类型va_list和三个宏va_start,va_arg和va_end声明va_list类型变量arg,用于访问参数列表未确定部分,用va_start来初始化,它的第一个参数是va_list的变量名,第二个是省略号前..
分类:
其他好文 时间:
2015-11-26 01:28:14
阅读次数:
159
函数原型中一般情况下参数的数目是固定的,但是如果想在不同的时候接收不定数目的参数时该怎么办呢?c语言提供了可变参数列表来实现。可变参数列表是通过宏来实现的,这些宏定义在stdarg.h的头文件中。头文件中声明了一个va_list类型和va_start、va_arg、va_end三个宏。我们使..
分类:
编程语言 时间:
2015-11-09 01:48:17
阅读次数:
205
本文主要介绍va_start和va_end的使用及原理。 在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end这两个宏,但对它们也只是泛泛的了解。 介绍这两个宏之前先看一下C中传递函数的参数时的用法和原理:1.在C中,当我们无法列出传递函数的所有实...
分类:
其他好文 时间:
2015-08-31 15:00:24
阅读次数:
154
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
这几个函数和变量是针对可变参数函数的,什么是可变参数函数呢,最经典的莫过于printf和scanf,这两个函数的声明如下:1 int printf(const char *format, ...);2 3 int scanf(const char *format, ...); 这两个函数声明中...
分类:
编程语言 时间:
2015-08-03 22:26:24
阅读次数:
218