码迷,mamicode.com
首页 > 其他好文 > 详细

stdarg的使用

时间:2019-10-17 11:52:10      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:std   va_arg   put   头文件   获取   turn   printf   可变   end   

// 可变参头文件 <stdarg.h>
// 主要依赖五个宏: va_list,va_start, va_arg, va_end, va_copy
// 其中 va_copy 是 c99 新引进的

//     va_list
//         本质为char*指针,指向可变参的列表,用于声明变量
//         eg. va_list ap;
//     va_start
//         获取可变参数列表的第一个参数的地址, para为可变参数最左边的参数,即...之前的最后一个参数
//         eg. va_start(ap, para)
//     va_arg
//         获取可变参数的当前参数并将指针指向下一参数, type为当前参数的类型
//         eg. va_arg(ap, type)
//     va_end
//         与清空va_list的参数列表,与va_start配合使用
//         eg. va_end(ap)
//     va_copy
//         复制 va_list 的变量
//         eg. va_copy(des, src)
    
#include <stdio.h>
#include <stdarg.h>

void printint(int arg, ...)
{
    int t;
    va_list ap;
    va_start(ap, arg);
    
    for(;;)
    {
        t = va_arg(ap, int);
        if(t == 0)
            break;
        printf("%d ", t);
    }
    
    printf("\n");
    va_end(ap);
}

int main()
{
    printint(1,2,3,4,5,0);
    printint(34,12,0);
    return 0;
}
    
// output:

//     2 3 4 5
//     12

 

stdarg的使用

标签:std   va_arg   put   头文件   获取   turn   printf   可变   end   

原文地址:https://www.cnblogs.com/tongyishu/p/11690899.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!