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

可变长参数的函数的写法

时间:2015-05-08 14:53:35      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:c语言   可变长参数函数   

c语言中的可变长参数的函数小例子:

#include <stdio.h>
#include <stdarg.h>
#include <assert.h>
static int pp;
void func1()
{
    static int pp1;
    printf("hello world\n");
}

void tiny_printf(char *format, ...)
{
    int i;
    va_list ap;
    va_start(ap, format);
    for (i = 0; format[i] != ‘\0‘; ++i)
    {
        switch (format[i])
        {
        case ‘s‘:
            printf("%s ", va_arg(ap, char*));
            break;
        case ‘d‘:
            printf("%d ", va_arg(ap, int));
            break;
        default:
            assert(0);
        }
    }
    va_end(ap);
    putchar(‘\n‘);
}

int main(void)
{
    char *str = "abc";
    tiny_printf("sdd", "hello", 3, 5);
    return 0;
}

在第14行,声明va_list类型的变量ap。va_list类型是这样定义的:
typedef char *va_list;
在第15行,va_start(ap, format);意味着”使指针ap指向参数format的下一个位置”。
va_arg()制定ap和参数类型,就可以书序地取出可变长部分的参数。
第30行的va_end()只是一个摆设。

可变长参数的函数的写法

标签:c语言   可变长参数函数   

原文地址:http://blog.csdn.net/woniu317/article/details/45579749

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