Что это означает?
void message(int x, int y, ...)
Я не могу понять то, что.... Кто-либо может объяснить?
Неопределенное/переменное количество параметров. Для работы с такой функцией необходимо использовать тип 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));
}
Подробнее можно найти здесь
...
обозначает переменную список аргументов, к которым можно получить доступ через va_arg, va_end и va_start .
Где-то вы определили сообщение функции, которое принимает как минимум два аргумента типа int, а затем некоторые необязательные аргументы, обозначенные знаком «...». ( printf - еще одна функция, принимающая необязательные аргументы).
К необязательным аргументам можно получить доступ с помощью функций va _ * .
... представляет последний аргумент, переданный как массив или как последовательность аргументов.
Это формальный параметр переменного аргумента. С синтаксической точки зрения он позволяет передавать переменное количество параметров (как минимум два, это x и y, но можно и больше).