Некоторое время я изучал C ++, и единственное, чего я не могу обернуть головой, — это прототип функции, вызов функции и определение функций. Я прочитал все виды вещей и до сих пор не знаю, что это значит или делает. я просто хочу быть в состоянии понять и идентифицировать каждый из них. Я почти уверен, что это важно для программирования из того, что я прочитал. У меня есть приблизительное представление о прототипе функции, я считаю, что это утверждение, которое возвращает значение чего-либо.
Позвольте мне посмотреть, могу ли я объяснить с некоторыми аналогиями
Функциональный прототип — Это похоже на рекламу продукта — в нем говорится, что есть продукт X, и вы можете получить его из местоположения Y. Это достаточно для вас как потребителя, но ничего не говорит о том, что происходит за кулисами, чтобы получить X к Y и тебе.
так же, Прототип функции — это оператор, который просто говорит, что есть функция somewhr, которая называется X, принимает аргументы Y и возвращает значение Z. Достаточно для любых вызывающих, но не может ничего сделать самостоятельно.
например int DoSomething(int arg);
Вызов функции — Это потребитель собирается и просит продукт X в месте Y.
Это когда код функции фактически вызывается. Но чтобы вызвать функцию, вам нужно знать, что она существует, поэтому вам нужен (по крайней мере) прототип для функции чуть выше вызова.
например int a = DoSomething(1);
Определение функции — Это фактическая процедура, которая производит продукт X и транспортирует его к месту Y.
По сути это код самой функции.
например
int DoSomething(int arg){
return arg+2;
}
Прототип функции (также называемый предварительным объявлением) необходим в C и для свободных функций (функций, которые не принадлежат классу) в C ++
Прототип функции уникален для C — не используется в C ++. Прототип функции C в основном эквивалентен объявлению функции C ++, например:
int f(int);
int g(double);
Они отличаются тем, что в скобках ничего не указано:
int f();
В C ++ это объявляет f
как функция, которая принимает аргументы. В C это объявляет f
как функция без указав что-нибудь об аргументах1. Чтобы получить прототип C, эквивалентный объявлению C, вам нужно поставить что-то между скобками:
int f(void);
Последнее также разрешено в C ++, но самый Программисты C ++ предпочитают избегать этого.
Определение функции, где у вас есть заголовок а также тело функции:
int f(int x) {
return x+4;
}
Вызов функции, где вы использование функция, которую вы определили:
int y = 2;
int x = f(y); // using the f() above, this is equivalent to int x = 6;
1 В былые времена (примерно до 1985 года или около того) C вообще не имел прототипов функций, так что это было единственное поддерживаемое объявление функций. Это обычно осуждается в новом коде.