Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по С Живицкая (Мет пособие).doc
Скачиваний:
112
Добавлен:
15.06.2014
Размер:
2.11 Mб
Скачать

2.5.Функции.

Функция – это независимое множество операторов для выполнения некоторой задачи.

Определение функции:

заголовок функции

{ тело функции}

В заголовке функции указывается класс_памяти описатель_типа имя (список параметров) описание_параметров. Тело функции – это простой оператор, или группа операторов.

Класс памяти определяется с помощью ключевых слов extern или static. Внешний (extern) класс памятиозначает, что функция будет доступна, как в данном программном модуле, так и в других отдельно-скомпелированных модулей.

Статический ( static ) класс памятиозначает, что функция будет доступна только в модуле, ограниченным данным исходным файлом.

По умолчанию принимается класс памяти внешний ( extern ).

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

Для задания описателя типа используются ключевые слова shot, long, unsigned,int,char,float,double, произвольный тип,void. Типы shot и char автоматически преобразуются в int, а float вdouble.

Описатель void используется в том случае, если функция не возвращает значение. Например, если функция осуществляет только печать некоторых значений. По умолчанию принимается тип int.

Описатель типа в заголовке должен соответствовать описателю типа, используемого при объявлении в вызывающей функции.

Имя – это любой индентификатор языка " C ". После имени обязательно круглые скобки, независимо от того имеет функция параметры или нет.

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

Рекомендуется описание каждого параметра размещать с новой строки, если описание какого-либо параметра отсутствует, то по умолчанию этот параметр имеет тип int и автоматический класс памяти.

Список параметров может отсутствовать, в этом случае после имени функции обязательно должны быть круглые скобки. При использовании функции всегда возникает отношение вызова между 2-мя функциями. Одна из них становится вызывающей и временно передает управление вызываемой функции. Возможно многоуровневое вложение функции. Автоматические (локальные) переменные действительны только в теле функции, в которой они объявлены. После выхода из функции значение этих переменных теряются. Автоматические переменные являются локальными, никакая функция не имеет доступа к локальной переменной в другой функции, даже если имя переменной в этой функции такое же, как и в других функциях.

Пример 1:

void f1 ( s1,n) / * функция не возвращает никакого значения * /

/ * имя функции и список параметров * /

int * s1;

int n; / * описание параметров * /

{ int i;

for ( i = 0; i<n, i++) / * тело функции * /

printf(" % d % C ",* (s1 + i),(i % 10 = = 9 ||i = = n-1)?'n':");

}

Пример2:

main ( ) / * функция не содержит параметров * /

{ int a;

char c; / * переменные а и с являются локальными * /

a = 3;

c = a;

printf ( " a = % d, c = % c ", a,c );

}

Пример( наименьшая функция )

f ( )

{

}

Не имеет описателя типа-списка параметров, списка объявления параметров и не одного оператора. Используется при построении большой программы для того, чтобы отметить место, где будет происходить дальнейшее развитие.