- Получить ссылку
- Электронная почта
- Другие приложения
Общий вид функции
В общем виде функция выглядит следующим образом:
возвр-тип имя-функции(список параметров) { тело функции }
возвр-тип определяет тип данного, возвращаемого функцией[1]. Функция может возвращать любой тип данных, за исключением массивов список параметров
— это список, элементы которого отделяются друг от друга запятыми.
Каждый такой элемент состоит из имени переменной и ее типа данных. При
вызове функции параметры принимают значения аргументов. Функция может
быть и без параметров, тогда их список будет пустым. Такой пустой список
можно указать в явном виде, поместив для этого внутри скобок ключевое
слово void.
В объявлениях (декларациях) переменных можно объявить
(декларировать) несколько переменных одного и того же типа, используя
для этого список одних только имен, элементы которого отделены друг от
друга запятыми. А все параметры функций, наоборот, должны объявляться
отдельно, причем для каждого из них надо указывать и тип, и имя. То есть
в общем виде список объявлений параметров должен выглядеть следующим
образом:
f(тип имя_переменной1, тип имя_переменной2,..., тип имя_переменнойN)
Вот, например, два объявления параметров функций, первое из которых правильное, а второе — нет:
f(int i, int k, int j) /* правильное */ f(int i, k, float j) /* неправильное, у переменной k должен быть собственный спецификатор типа */
[1]Данное, возвращаемое функцией, называется также результатом. Соответственно, возвращаемый тип часто называется также типом результата.
Что такое область действия функции
В языке правила работы с областями действия — это правила,
которые определяют, известен ли фрагменту кода другой фрагмент кода или
данных, или имеет ли он доступ к этому другому фрагменту. Об областях
действия, определяемых в языке С, говорилось в главе 2. Здесь же мы более подробно рассмотрим одну специальную область действия — ту, которая определяется функцией.
Каждая функция представляет собой конечный блок кода.
Таким образом, она определяет область действия этого блока. Это значит,
что код функции является закрытым и недоступным ни для какого выражения
из любой другой функции, если только не выполняется вызов содержащей его
функции. (Например, нельзя перейти в середину другой функции с помощью goto.)
Код, который составляет тело функции, скрыт от остальной части
программы, и если он не использует глобальных переменных, то не может
воздействовать на другие части программы или, наоборот, подвергаться
воздействию с их стороны. Иначе говоря, код и данные, определенные
внутри одной функции, без глобальных переменных не могут воздействовать
на код и данные внутри другой функции, так как у любых двух разных
функций разные области действия.
Переменные, определенные внутри функции, являются
локальными. Локальная переменная создается в начале выполнения функции, а
при выходе из этой функции она уничтожается. Таким образом, локальная
переменная не может сохранять свое значение в промежутках между вызовами
функции. Единственное исключение из этого правила — переменные,
объявленные со спецификатором класса памяти static. Таким
переменным память выделяется так же, как и глобальным переменным,
которые используются для хранения значений, но область действия таких
переменных ограничена содержащими их функциями. (Дополнительная
информация о локальных и глобальных переменных приведена в главе 2.)
Формальные параметры функции также находятся в ее
области действия. Это значит, что параметр доступен внутри всей функции.
Параметр создается в начале выполнения функции, и уничтожается при
выходе из нее.
Все функции имеют файл в качестве области действия
(file scope). Таким образом, функцию нельзя определять внутри другой
функции. Поэтому С практически не является языком с блочной структурой.
Комментарии
Отправить комментарий