“......”在C函数声明中意味着什么?

时间:2010-03-03 07:32:59

标签: c function variadic-functions

这是什么意思?

void message(int x, int y, ...)

我无法理解......是什么。 有人可以解释一下吗?

5 个答案:

答案 0 :(得分:8)

...表示可以通过va_arg, va_end and va_start访问的变量参数列表。

答案 1 :(得分:5)

未指定/可变数量的参数。要处理此类函数,您必须使用va_list类型和va_start,va_arg和va_end函数:

取自here的例子:

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

        int maxof(int, ...) ;
        void f(void);

        main(){
                f();
                exit(EXIT SUCCESS);
        }

        int maxof(int n args, ...){
                register int i;
                int max, a;
                va_list ap;

                va_start(ap, n args);
                max = va_arg(ap, int);
                for(i = 2; i <= n_args; i++) {
                        if((a = va_arg(ap, int)) > max)
                                max = a;
                }

                va_end(ap);
                return max;
        }

    void f(void) {
            int i = 5;
            int j[256];
            j[42] = 24;
            printf("%d\n",maxof(3, i, j[42], 0));
    }

您可以找到更多详情here

答案 2 :(得分:3)

您已经在某处定义了一个函数消息,它至少接受两个int类型的参数,然后是一些由“...”表示的可选参数。 (printf是另一个使用可选参数的函数。)

可以使用va_*函数访问可选参数。

答案 3 :(得分:2)

...表示作为数组或参数序列传递的最终参数。

答案 4 :(得分:0)

这是变量参数形式参数。从语法学角度来看,它允许你传递可变数量的参数(至少两个,即x和y,但更多)。