Что делает “…”, означают в объявлении функции C?

Что это означает?

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

Я не могу понять то, что.... Кто-либо может объяснить?

7
задан Josh Lee 3 March 2010 в 07:43
поделиться

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

Подробнее можно найти здесь

5
ответ дан 6 December 2019 в 10:49
поделиться

... обозначает переменную список аргументов, к которым можно получить доступ через va_arg, va_end и va_start .

8
ответ дан 6 December 2019 в 10:49
поделиться

Где-то вы определили сообщение функции, которое принимает как минимум два аргумента типа int, а затем некоторые необязательные аргументы, обозначенные знаком «...». ( printf - еще одна функция, принимающая необязательные аргументы).

К необязательным аргументам можно получить доступ с помощью функций va _ * .

3
ответ дан 6 December 2019 в 10:49
поделиться

... представляет последний аргумент, переданный как массив или как последовательность аргументов.

2
ответ дан 6 December 2019 в 10:49
поделиться

Это формальный параметр переменного аргумента. С синтаксической точки зрения он позволяет передавать переменное количество параметров (как минимум два, это x и y, но можно и больше).

0
ответ дан 6 December 2019 в 10:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: