Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
119
Добавлен:
13.03.2016
Размер:
470.02 Кб
Скачать

2.2. Функции си

Как всегда при изучении подпрограмм, рассмотрим два вопроса: описание функций Си и обращение к ним.

2.2.1. Описание функции

Общий вид описания функций:

ТипИмя_Функции(Список_Формальных_Параметров)

{ Описания данных

Операторы

return(выражение, возвращаемое функцией)

}

Конструкция ТипИмя_Функции(Список_Формальных_Параметров) называетсязаголовком, остальная часть -блокомфункции. Для того, чтобы запрограммировать вызов функции, достаточно знать заголовок.

В заголовке тип- тип возвращаемого значения; если он отсутствует, то по умолчанию принимаетсяint. В оператореreturnуказывается выражение, значение которого присваивается имени функции; этот основной или единственный результат функции. В качестве типа может использоваться словоvoid14; в этом случае значение через имя функции не возвращается, т. е. имеем аналог подпрограммы общего назначения; тогда, естественно,returnне нужен.

Имя_Функцииимеет два смысла:

  1. имя алгоритма; более строго, имя функции - это особый указатель (указатель на функцию), его значение - адрес точки входа в функцию;

  2. возвращаемое значение (имя функции можно использовать в выражениях).

Заметим, что использование имени функции внутри ее блока рассматривается как обращение функции к ней самой (рекурсивное обращение). После имени функции обязательно должны идти скобки со списком параметров (если этот список не пустой). Использовать имя функции в выражениях как имя простой переменной нельзя. Если это необходимо по смыслу задачи, например, для накапливания результата, то следует завести промежуточную переменную и использовать ее вместо имени функции, а затем ее значение присвоить имени функции с помощью оператора return (см. пример 2 п.2.2.4).

Если имя функции main, то это главная функция, она первой получает управление после запуска программы;mainобязательно присутствует в программе, и только один раз. В настоящем пособии рассматриваемmainбез параметров, хотя Си позволяет разрабатывать программы с параметрами.

Список формальных параметров.имеет вид: тип1 параметр1, тип2 параметр2,..., типN параметрN

В список формальных параметров во всех алгоритмических языках включаются переменные, которые передаются из главной (или другой вызывающей) функции в вызываемую функцию и из вызываемой функции в вызывающую, т. е. это “вход”и“выход”функции. У массивов-формальных параметров при описании можно не указывать число значений первого индекса.

Если список формальных параметров отсутствует или вместо него стоит слово void, то нет передачи значений в функцию.

Замена формальных параметров на фактические в Си происхо­дит только по значению, поэтомуу переменных-результатов функции в список формальных параметров следует включать ад­рес (вспомните функцию scanf –п. 1.3.3).Имя массива является ад­ресом начала массива, поэтомумассивы в Си передаются только "по имени", передачу массивов“по значению” осуществить невоз­можно.

2.2.2. Обращение к функции

Существует два способа обращения к функции:

1) как к процедуре общего назначения, т. е. можно для вызова функции использовать оператор Имя_Функции(Список_Фактических_Параметров)

2) как к функции, т. е. можно указатель функции Имя_Функции(Список_Фактических_Параметров) - использовать в выражениях.

Для функции типа voidдопустим только первый способ.

Заметим еще раз, что фактические параметры должны соответствовать формальным по количеству, порядку перечисления и типу.