[C语言]函数可变长度参数的使用

作者: 忆往 分类: C++の生涯,学习の生涯 发布时间: 2018-07-01 12:45

所需头文件:<stdarg.h>

成员1:va_list    -----char* 指针
成员2:va_start(const char*,int count) ----- va_start(args,count)
成员3:va_arg(const char*,T) ----- va_arg(args,int)
成员4:va_end(char*) ----- va_end(args);

源代码:

#include<stdio.h>
#include<stdarg.h>

int myparams(int count,...) // 代表参数里面含有可变参数
{
    va_list args;
    va_start(args,count);
    for(int i=0;i<count;i++)
    {
        int num=va_arg(args,int);
        printf("%d=%d\n",i,num);
    }
    va_end(args);
    return 0;
}

int main()
{
    myparams(5,6,7,8,9,10);
    
    return 0;
}

心得体会:va_list 申请一个栈段的空间,va_start函数 取char*指针地址,然后讲count个参数依次从右往左压入栈中(空间类似是以栈结构来保存数据),然后使用 va_arg()函数依次将栈中元素取出,最后使用va_end来释放这段空间

发表评论

电子邮件地址不会被公开。 必填项已用*标注