views:

178

answers:

5

What does this mean?

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

I can't understand what ... is. Can anybody explain?

+8  A: 

... denotes a variable list of arguments that can be accessed through va_arg, va_end and va_start.

Heinzi
some good programmer are here.you are one of them.thanks a lot
ambika
+3  A: 

You have defined a function message somewhere that takes at least two arguments of type int and then some optional arguments indicated by the "...". (printf is another function taking optional arguments).

The optional arguments can be accessed using the va_* functions.

Arve
+5  A: 

Unspecified/variable number of parameters. To handle such function you have to use the va_list type and va_start, va_arg, and va_end functions:

An example taken from 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));
    }

You can find more details here

Ando
ambika
A: 

It's the variable argument formal parameter. From the syntactical prospective it allows you pass a variable number of parameters (at least two, which are x and y, but even more).

Dacav
+2  A: 

... represents final argument passed as an array or as a sequence of arguments.

rekha_sri