Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Топ:
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Интересное:
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Немного уточним описание функции:
[спецификатор] тип имя_функции([список_формальных_параметров])
{тело_функции}
Верхняя строка описания – заголовок функции, нижняя – тело. Часто заголовок функции называют объявлением (далее мы рассмотрим ещё одно понятие, связанное с заголовком, – прототип). Полное описание, включающее заголовок и тело функции, называют определением функции.
Функции могут быть определены со спецификаторами extern и static. Если функция объявлена как extern (по умолчанию все функции extern), доступ к ней возможен из любого файла проекта. Если функция объявлена как static, доступ к ней возможен только из того же файла, где она находится.
Результат функции называют возвращаемым значением. В заголовке функции задаётся тип возвращаемого значения. Если функция ничего не возвращает (в некоторых языках такие функции называются процедурами), задаётся пустой тип void.
Cписок_формальных_параметров – последовательность описаний параметров функции, разделённых запятыми. Даже если функция не имеет параметров, наличие круглых скобок обязательно. Вместо параметров в этом случае можно указать ключевое слово void. Например, стандартная функция rand() не содержит параметров (см. пример 1.5).
Тело функции – оператор или блок (возможно, пустой). Выполнение тела заканчивается, когда будут выполнены все операторы или встретился оператор return – он служит для выхода из функции и возврата значения.
Размещение определений функций. Определения функций можно по-разному разместить в файлах проекта:
· для небольших программ определения всех функций, в том числе, и функции main, можно расположить в одном файле;
· в более объёмных программных проектах функции располагаются в отдельном файле (или нескольких файлах, сгруппированные по назначению); для использования таких функций в других файлах используется директива #include (напомним, что если у функции спецификатор static, то её нельзя использовать в других файлах).
Сначала рассмотрим более простой случай – все функции в одном файле. Здесь тоже есть два варианта на выбор.
Простой вариант – расположить определения всех функций перед функцией main, если какая-либо функция вызывает другую (обращается к ней), определение вызываемой должно быть перед определением вызывающей функции – иначе компилятор будет считать имя вызываемой функции неизвестным. Этот вариант не всегда можно воплотить, особенно, если функции много раз вызывают друг друга, иногда не напрямую, а через другие функции.
Чтобы избежать этих сложностей и потенциальных ошибок при компиляции программы, рекомендуется использовать другой способ – в начале файла (перед функцией main) расположить прототипы всех функций, а определения функций поместить после функции main, причём, в этом случае уже не надо заботиться о порядке следования определений функции, поскольку каждой определение уже предварено прототипом.
Прототип функции – это её заголовок (объявление), за которым следует ";". В прототипе, в отличие от определения функции, можно опустить имена параметров, достаточно указать только их типы – именно эта информация нужна компилятору.
Например, функция для возведения числа в квадрат (в языке Pascal такая функция называется sqr):
//Пример 1.15 - функция, вычисляющая квадрат заданного числа
double sqr (double x){
return x*x;
}
Прототип этой функции: double sqr (double);
Теперь коснёмся такого способа организации программного проекта, при котором определения функций располагаются в нескольких различных файлах. В этом случае использование прототипов функций тоже оказывается очень удобным – прототипы функций размещают в отдельных заголовочных файлах, имеющих расширение.h, а полные определения функций – в другом файле с расширением.cpp. Файл с расширением.cpp обычно компилируется, а затем хранится в виде объектного кода и подключается к программе уже на этапе компоновки. Для компилятора достаточно той информации, которая содержится в заголовочном файле.
Современные среды разработки хорошо поддерживают проекты, состоящие из нескольких файлов, и берут на себя основную часть работы по сборке таких проектов. Безусловно, в целях многократного использования функций в различных проектах следует выделять их определения и прототипы в отдельные файлы. Так устроена и стандартная библиотека С++, благодаря чему мы имеем удобные возможности использовать её в своих разработках.
|
|
|
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!