Другие языки программирования и технологии
Вопрос (точнее просьба) про функции в С++.
Приведите пожалуйста примеры программы где есть определение функции, объявление функции (если это не одно и тоже), и вызов функции. с понятными и подробными коментариями, Чтоб я разобралась что есть что (где формальные параметры, где фактические и как они передаются, и т. д.).Огромное спасибо.
int f(int x); - заканчивается точкой с запятой - это объявление. (x - формальный параметр)
Что это ф-я делает неизвестно (не определено) , известно (объявлено) только лишь то, что есть такая ф-я f, которая берет целое число и что-то с ним делает.
int f(int x) { return x*2; } - дается тело ф-ии в фигурных скобках, - это определение (x - формальный параметр)
Здесь указано (определено) что именно эта ф-я делает (умножает параметр х на 2)
где-нибудь в программе:
m = f(10); - вызов ф-ии. (10 - фактический параметр)
или m = f(n); - вызов ф-ии. (n - фактический параметр)
Здесь мы уже пользуемся ф-ей, - вызываем ее. Формальные параметры заменяются на конкретные (фактические) значения.
Что это ф-я делает неизвестно (не определено) , известно (объявлено) только лишь то, что есть такая ф-я f, которая берет целое число и что-то с ним делает.
int f(int x) { return x*2; } - дается тело ф-ии в фигурных скобках, - это определение (x - формальный параметр)
Здесь указано (определено) что именно эта ф-я делает (умножает параметр х на 2)
где-нибудь в программе:
m = f(10); - вызов ф-ии. (10 - фактический параметр)
или m = f(n); - вызов ф-ии. (n - фактический параметр)
Здесь мы уже пользуемся ф-ей, - вызываем ее. Формальные параметры заменяются на конкретные (фактические) значения.
У меня упорно вырезается 3/4 проги. Пиши в личку.
// Объявление в .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;
}
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;
}
Формальные параметры — те, которые указываются при объявлении и описании функции, а фактические — названия переменных, выражения или конкретные значения, указываемые при вызове функций.
Не знаю как в C, но в других языках программирования параметры могут передаваться по ссылке или по значению. Это применимо только к тем параметрам, которые указаны в виде названия переменных. При этом, если параметр передан по ссылке, то его изменение внутри функции приводит к изменению значения этой переменной в том блоке программы, из которого была вызвана функция.
Не знаю как в C, но в других языках программирования параметры могут передаваться по ссылке или по значению. Это применимо только к тем параметрам, которые указаны в виде названия переменных. При этом, если параметр передан по ссылке, то его изменение внутри функции приводит к изменению значения этой переменной в том блоке программы, из которого была вызвана функция.
Похожие вопросы
- Помогите с информатикой. Вопрос по С++: написание функций с помощью void
- Вопрос: а как задать функцию в С++?
- Вопрос для тех кто знает точный ответ, язык C про функции все подробности вопроса внутри...
- Вопрос про возвращаемое значение из функции в С++.
- Вопросы про функции. За лучший и полный ответ 50 баллов
- Помогите с Си. Вопрос по заданию (насчет типизированной функции, которая должна возвращать массив)
- Вопрос массивам и функциям по с++
- Вопрос насчет объявления и параметра функции в C++
- Вопрос про функции (с++)
- Оконное приложение на WinAPI, вопрос про параметры функции WndProc. Язык программирования Си.