Для чего служат параметры функции?

227
11 апреля 2017, 11:48

Я так понимаю, там объявляются типы переменных. А также ссылки (указатели). А разве типы переменных нельзя объявить в теле функции, оставив параметры пустыми f() ? Объясните пожалуйста назначение параметров функций.

Answer 1

Параметры функции предназначены для общения функции с "внешним миром", т.е. с кодом, который вызвал эту функцию.

Значения параметров внутри функции - это ни что иное, как значения аргументов функции, предоставленные вызывающим кодом в точке вызова. Таким образом вы передаете информацию (аргументы) снаружи из точки вызова внутрь функции. Когда вы вызываете функцию sqrt с аргументом 25

sqrt(25)

значение 25 передается внутрь функции sqrt через ее единственный параметр. Внутри функция sqrt будет знать, что ее попросили вычислить квадратный корень из 25, Что она и сделает.

Также параметры функции могут использоваться для возвращения результатов работы функции обратно в вызывающий код.

Переменные, которые объявлены локально внутри функции никакой связи с вызывающим кодом не имеют и использоваться для связи с внешним миром не могут.

Answer 2

В дополнение к ответу @AnT - то, о чем вы говорите, немного похоже - но только похоже! - на объявление функций в старом K&R C:

int max(a, b, с)
int а, b, с;
{
    /* ... */
}

Но - имена параметров все равно нужно указывать; только и того, что вы объявляете их типы позже. Если не указывать параметры вовсе - функция просто не будет знать, что ей вообще что-то передано, т.е. не будет понимать, с какой входной информацией работать. Можно, конечно, и так - через глобальные переменные, но это же ужас! например:

double sqrt_param;
double sqrt() { /* Вычисление квадратного корня из sqrt_param */ };
int main()
{
    sqrt_param = 25;
    cout << "sqrt(25) = " << sqrt() << endl;
    sqrt_param = 36;
    cout << "sqrt(36) = " << sqrt() << endl;
}
READ ALSO
Хранение данных, вне программы. С++ [требует правки]

Хранение данных, вне программы. С++ [требует правки]

Как можно хранить данные вне программы в C++ кроме текстовых и бинарных файлов?

284
программа работает по разному под linux и windows (C++)

программа работает по разному под linux и windows (C++)

Есть небольшая программа, я использовал только стандартную библиотеку, но она по разному работает под linux и windows

222
Связь между классами

Связь между классами

Есть: Список работ выполняемых сотрудникомСписок содержит Ф

195
Считывание с файла. С++

Считывание с файла. С++

Почему появляется эта ошибка? Когда я не использую !file2eof, ошибка не возникает

194