Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Топ:
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Интересное:
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Дисциплины:
2018-01-28 | 260 |
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 обычно компилируется, а затем хранится в виде объектного кода и подключается к программе уже на этапе компоновки. Для компилятора достаточно той информации, которая содержится в заголовочном файле.
|
Современные среды разработки хорошо поддерживают проекты, состоящие из нескольких файлов, и берут на себя основную часть работы по сборке таких проектов. Безусловно, в целях многократного использования функций в различных проектах следует выделять их определения и прототипы в отдельные файлы. Так устроена и стандартная библиотека С++, благодаря чему мы имеем удобные возможности использовать её в своих разработках.
|
|
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!