Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос (точнее просьба) про функции в С++.

Мария Соловьёва Ученик (160), закрыт 15 лет назад
Приведите пожалуйста примеры программы где есть определение функции, объявление функции (если это не одно и тоже), и вызов функции. с понятными и подробными коментариями, Чтоб я разобралась что есть что (где формальные параметры, где фактические и как они передаются, и т. д.).
Огромное спасибо.
Лучший ответ
RadChand Гуру (3831) 15 лет назад
int f(int x); - заканчивается точкой с запятой - это объявление. (x - формальный параметр)
Что это ф-я делает неизвестно (не определено) , известно (объявлено) только лишь то, что есть такая ф-я f, которая берет целое число и что-то с ним делает.

int f(int x) { return x*2; } - дается тело ф-ии в фигурных скобках, - это определение (x - формальный параметр)
Здесь указано (определено) что именно эта ф-я делает (умножает параметр х на 2)

где-нибудь в программе:
m = f(10); - вызов ф-ии. (10 - фактический параметр)
или m = f(n); - вызов ф-ии. (n - фактический параметр)
Здесь мы уже пользуемся ф-ей, - вызываем ее. Формальные параметры заменяются на конкретные (фактические) значения.
Остальные ответы
Капитан Гугл Искусственный Интеллект (146193) 15 лет назад


У меня упорно вырезается 3/4 проги. Пиши в личку.
Κότ μάτρόϛκϰΗ Просветленный (21362) 15 лет назад
// Объявление в .h
int Func(int param);

// Определение в .cpp
int Func(int param)
{
// param - параметр, предается через стек
int a; // локальная переменная, находится в стеке

return 0;
}

формальные и фактические параметры - это преподавательское изобретение, к программированию отношения не имеет. Параметры отличаются от локальных переменных только тем, что находятся в стеке выше адреса возврата функции, а локальные переменны - ниже. Если считать, что стек растет сверху вниз.

int main()
{
int b = func(20);
// 20 запихивается в стек, это значение параметра
// затем в стек запихивается адрес возврата и вызывается функция.
// возвращаемое ею значение (0) запихивается в локальную переменную b

return 0;
}
Олег Филатов Мыслитель (9210) 15 лет назад
Формальные параметры — те, которые указываются при объявлении и описании функции, а фактические — названия переменных, выражения или конкретные значения, указываемые при вызове функций.

Не знаю как в C, но в других языках программирования параметры могут передаваться по ссылке или по значению. Это применимо только к тем параметрам, которые указаны в виде названия переменных. При этом, если параметр передан по ссылке, то его изменение внутри функции приводит к изменению значения этой переменной в том блоке программы, из которого была вызвана функция.
Похожие вопросы