`

stdarg.h 可变长参数

    博客分类:
  • APUE
阅读更多
http://zh.wikipedia.org/zh-sg/Stdarg.h
http://www.cppblog.com/qiujian5628/archive/2008/01/21/41562.html

★stdarg是由stdandard(标准) arguments(参数)简化而来


#include <stdio.h>
#include <stdarg.h>
 
void printargs(int arg1, ...)   /* 輸出所有int型態的參數,直到-1結束 */
{
    va_list list;                 //  a_list 用来指向参数 C89
    int i;

    va_start(list, arg1);         //  va_start 使va_list指向起始的参数 C89
    i = arg1;
    while (i != -1)
    {
        printf("%d ", i);
        i = va_arg(ap, int);    //  va_arg 检索参数 C89
    }

    va_end(ap);                 //  va_end 释放va_list	C8
    putchar('\n');
}
 
int main(void)
{
    printargs(5, 2, 14, 84, 97, 15, 24, 48, -1);
    printargs(84, 51, -1);
    printargs(-1);
    return 0;
}


分享到:
评论

相关推荐

    可变参数stdarg.h使用方法(例题)

    可变参数stdarg.h使用方法(例题) va_list用法 va_start已经 va_end

    stdarg.h中三个宏va_start ,va_arg和va_end的应用

    一个可变参数的前一个参数,是一个固定的参数. 3)然后用va_arg返回可变的参数,并赋值给整数j. va_arg的第二个 参数是你要返回的参数的类型,这里是int型. 4)最后用va_end宏结束可变参数的获取.然后你就可以在函数里使

    c语言基于stdarg.h的可变参数函数的用法

    本篇文章主要介绍了c语言基于stdarg.h的可变参数函数的用法,详细的介绍了可变参数函数的详细用法和源码实例,有兴趣的可以了解一下

    stdarg的用法(可变参数的用法)

    可变参数列表是通过宏来实现的,这些宏定义于stdarg.h头文件,它是标准库的一部分。 这个头文件声明的一个va_list的类型,和三个宏va_start,va_arg,va_end。我们可以生明一个va_list类型的变量,配合三个宏使用。...

    linux头文件介绍

    linux应用程序中常用头文件的介绍 ; &lt;assert.h&gt; 验证程序断言 &lt;cpio.h &gt; cpio归档值 ...&lt;stdarg.h &gt; 可变参数表 &lt;stddef.h &gt; 标准定义 &lt;stdio.h &gt; 标准I/O库 &lt;stdlib.h &gt; 公用函数 &lt;string.h &gt; 字符串操作 ......

    C语言头文件大全

    ISO C标准定义的头文件(24项) &lt;assert.h&gt; 验证程序断言 &lt;complex.h&gt; 支持复数算术运算 &lt;ctype.h&gt; 字符类型 &lt;errno.h&gt; 出错码 ...&lt;signal.h&gt; 信号 &lt;stdarg.h&gt; 可变参数表 &lt;stdbool.h&gt; 布尔类型和值

    C语言函数库详解.doc

    C语言函数库详解.doc C语言函数库,包含 C 标准库、IO 函数、字符处理函数、...9. &lt;stdarg.h&gt;:可变参数表 10. &lt;stddef.h&gt;:公共定义 11. &lt;stdio.h&gt;:输入输出 12. &lt;stdlib.h&gt;:实用函数 13. &lt;time.h&gt;:日期与时间函数

    用可变参数的原理实现简单的printf函数

    利用可变参数实现简单的printf函数 编写了两种实现方法, 1,用stdarg.h自带的va_start,va_arg等函数实现 2,根据可变参数的原理实现 主要是用于加深对可变参数的理解 vc6.0 测试通过

    C语言中编写可变参数函数

    通过stdarg.h头文件为函数提供了定义可变参数列表的能力。声明一个可变参数的函数类似: void f1(int n,...); 其中n表示参数列表个数,而用省略号来表示未知参数列表。stdarg.h中提供了一个va_list类型,用于存放...

    va_list(),va_start(),va_arg(),va_end() 详细解析

    (一)写一个简单的可变参数的C函数 ...这些宏定义在stdarg.h中,所以用到可变参数的程序应该包含这个头文件.下面我们写一个简单的可变参数的函数,该函数至少有一个整数参数,第二个参数也是整数,是可选的.函

    实例讲解在C++的函数中变量参数及默认参数的使用

    若要访问声明后的参数,请使用包含在标准包含文件 STDARG.H 中的宏(如下所述)。 采用数量可变的参数的函数声明至少需要一个占位符参数(即使不使用它)。如果未提供此占位符参数,则无法访问其余参数。 当 char ...

    万能makefile写法详解,一步一步写一个实用的makefile

    2-这时打开main.d查看,发现main.d中未加入pub.h,因为根据模式规则%.d: %.c中的定义,只有依赖的.c文件变了,才会重新生成.d,而刚才改的是command.h,不会重新生成main.d、及在main.d中加入对pub.h的依赖关系,这...

    C语言数据结构之顺序数组的实现

    C语言数据结构之顺序数组的实现 ...#include&lt;stdarg&gt; /*可变参数*/ #define OK 1 //成功标志 #define ERROR 0 //错误标志 #define MAX_ARRAY_DIM 8 //数组最大维数 typedef int ElemType; typedef int St

    你必须知道的495个C语言问题

    1.23 能否声明和传入数组大小一致的局部数组,或者由其他参数指定大小的参数数组? 1.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 声明问题 1.25 函数只...

    《你必须知道的495个C语言问题》

    1.23 能否声明和传入数组大小一致的局部数组,或者由其他参数指定大小的参数数组? 13 1.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 13 声明问题 14 ...

Global site tag (gtag.js) - Google Analytics