c语言可变形参

c语言中的形参分为两种,可变形参和固定形参。当我们查找函数的用法时有的函数里面的形参列表有  ...  号,不懂的人把它当做是省略号,但其实那代表可变形参,例如printf函数:int printf(const char *format, ...);

使用可变形参分为4个步骤。首先我们得加上头文件:include

1 、定义一个va_list的类型变量(用于存储堆栈的首地址)
    va_list ap;
2、调用宏: va_star(ap,format)  将堆栈的首地址存入到a中,format是形参列表最后一个已知类型形参(***这里注意,形参列表开头一定是已知形参)
3、va_arg(ap,type)宏,将每一个数据取出
    ap是列表变量名
    type是要取出的类型,注意char会转变成int类型,float会转变成double,因为有精度要求;
4、va_end释放

fun(int num,...)
{
        va_list ap;
        va_start(ap,num);
        while(num>0)
        {
               printf("%d\n",va_arg(ap,int));
                num--;
        }
        va_end(ap);
}
void main()
{
    fun(5,1,2,3,4,5);
}

这里的num代表第一个参数值,用它表示可变参数的个数。printf函数的功能就是用可变参数实现的,它的第一个参数是字符串,后面的参数是根据前面字符串的需求取出的
 

你可能感兴趣的:(c语言可变形参)