Еще о параметрах функции в C++
Параметры со значениями по умолчанию
Для упрощения вызова функции, в ее заголовке можно указать значения параметров по умолчанию. Эти параметры должны быть последними в списке и могут опускаться при вызове функции. Если при вызове параметр опущен, должны быть опущены и все параметры, стоящие за ним. В качестве значений параметров по умолчанию могут использоваться константы, глобальные переменные и выражения:
Функции с переменным числом параметров
Если список формальных параметров функции заканчивается многоточием, это означает, что при ее вызове на этом месте можно указать еще несколько параметров.
Проверка соответствия типов для этих параметров не выполняется, char и short передаются как int, а float — как double.
В качестве примера можно привести функцию printf, прототип которой имеет вид:
Замечание. Для доступа к необязательным параметрам внутри функции используются макросы библиотеки va_start. va_arg и va_end, находящиеся в заголовочном файле .
Для упрощения вызова функции, в ее заголовке можно указать значения параметров по умолчанию. Эти параметры должны быть последними в списке и могут опускаться при вызове функции. Если при вызове параметр опущен, должны быть опущены и все параметры, стоящие за ним. В качестве значений параметров по умолчанию могут использоваться константы, глобальные переменные и выражения:
int f(int а, int b = 0); void f(int, int = 100, char* = 0); // обратите внимание на пробел между * и = //(без него получилась бы операция сложного присваивания *=) void err(int errValue = errno); // errno - глобальная переменная …. f (100); f(a, 1); // варианты вызова функции f fl(a); fl(a, 10); fl(a, 10, "Kafedra"); // варианты вызова функции f1 fl(a, ,"Kafedra ") // неверно
Если список формальных параметров функции заканчивается многоточием, это означает, что при ее вызове на этом месте можно указать еще несколько параметров.
Проверка соответствия типов для этих параметров не выполняется, char и short передаются как int, а float — как double.
В качестве примера можно привести функцию printf, прототип которой имеет вид:
int printf (const char*, ...);Это означает, что вызов функции должен содержать по крайней мере один параметр типа char* и может либо содержать, либо не содержать другие параметры:
printf("Введите исходные данные"); // один параметр printf("Сумма: %5.2f рублей", sum); // два параметра printf("%d %d %d %d\ a, b, с, d); // пять параметров