7

这是什么意思?

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

我无法理解……是什么。谁能解释一下?

4

5 回答 5

8

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

于 2010-03-03T07:35:30.120 回答
5

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

取自此处的示例:

  #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));
    }

您可以在此处找到更多详细信息

于 2010-03-03T07:36:32.760 回答
3

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

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

于 2010-03-03T07:35:42.830 回答
2

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

于 2010-03-03T10:15:05.020 回答
0

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

于 2010-03-03T07:36:41.193 回答