Другие языки программирования и технологии

Вопрос: а как задать функцию в С++?

Функцию нужно объявить, определить, и вызвать.

Объявить функцию - создать её прототип. Прототип функции состоит из типа возвращаемого значения (если функция не возвращает, то указывают void), декларации, идентификатора, который может состоять из букв английского алфавита, арабских цифр, символа подчёркивания. Идентификатор функции не может начинаться цифрой и не содержит пробелов. Вслед за идентификатором в круглых скобках указывается сигнатура функции. После закрывающей скобки ставится точка с запятой.
Сигнатура прототипа функции состоит из набора типов данных, передаваемых в функцию параметров. Для неизменяемого в функции параметра перед его типом указывают const.
Наличие идентификаторов формальных параметров в прототипах указывать необязательно.
Параметроы в функцию можно передавать по значению, по указателю и по ссылке.
В качестве параметров можно передавать все известные типы, ссылки на эти типы, а также указатели на них и функции.
Количество параметров ограничено физической памятью компьютера в текущий момент времени. Кроме того параметров может не быть вовсе, так же существуют функции с необязательными параметрами и функции с неограниченным числом параметров.
Для функций с необязательными параметрами существует правило, которое требует располагать их в конце сигнатуры для декларации в стиле Си и в начале для декларации в стиле Pascal (то есть зеркально) . Все необязательные формальные параметры должны быть обязательно инициализированы значениями по умолчанию в прототипе функции, а в реализации указываются только тип и идентификатор параметра. Если при вызове функции не указывать такие параметры, будут подставлены значения по умолчанию.
Для функций с неограниченным (переменным) числом параметров, хотя бы один параметр должен быть указан явно, в конце его через запятую ставится многоточие.
Декларация (перечисление параметров в сигнатуре) в стиле Си (слева направо) используется по умолчанию, её можно опустить. Декларация в стиле Pascal нужна для совместимости с ранними версиями Windows, которые были написаны на этом языке. Стиль Pascal использовать крайне не рекомендуется.
Общий вид прототипов функций:
Для функций без параметров и возвращаемых значений:
void __cdacl _name1(); // __cdacl можно и не указывать.
void _name2(void ); // void можно и не указывать.
Для функций с параметрами по значению и возвращающей значению:
double _name3(int, const size_t);
Для функций с параметрами по значению, необязательным параметром, возвращающей значение:
bool _name4(int, const size_t _size = 10);
Для функций с с неограниченным (переменным) числом параметров, возвращающей указатель:
int * _name5(int, ..);
Передача параметров по ссылкам:
void _name6(int &, int &);
Или передача параметров по указателю, с его возвращением:
float ** _name7(float **, const size_t, const size_t);
Прототипы функций расположены в коде выше точки их вызова. Это позволяет их реализацию (определение) разместить в удобном месте программы, но ниже самого прототипа. Объявление можно совместить с определением, если функция определена выше места её вызова.

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

При вызове в функцию передаются параметры в порядке их следования, в соответствии с их типами данных.
return - прекращает выполнение функции и, как правило, возвращает указанное значение в место вызова.
ИТ
Илхом Тешабоев
80 316
Лучший ответ
Тип_результата Имя_функции (Тип_пар1 Имя_пар1, Тип_пар2 Имя_пар2, ..) {
Оператор1;
Оператор2;
...
ОператорN;
return n;
};
ЮГ
Юрий Глухом
54 752