История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Топ:
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Интересное:
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Дисциплины:
2018-01-28 | 267 |
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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!