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

В С определены три производных типа:

§ массив

§ указатель

§ функция.

Функцию следует рассматривать с двух точек зрения:

§ функция – это один из производных типов данных,

§ функция – это минимальный исполняемый модуль программы на языке С.

Все функции в языке С имеют следующий формат определения:

<тип> <имя_функции> (<спецификация параметров>)

<тело функции>

Здесь

<тип> -

§ void (для функций, не возвращающих значения),

§ обозначение типа возвращаемого функцией значения.

<имя_функции> -

§ main для основной (главной) функции программы,

§ произвольно выбираемое программистом имя (идентификатор).

<спецификация параметров> -

§ это либо пусто,

§ либо список формальных параметров, каждый элемент которого имеет вид:

<обозначение_типа> <имя_параметра>

По сравнению с уже известными способами определения формальных параметров, существует возможность завершения списка параметров запятой с последующим многоточием «, …». Это означает, что при обращении к функции может быть указано большее число фактических параметров. Так, известные функции printf и scanf имеют прототипы:

int printf (const char *format, …);

int scanf (const char *format, …);

Указанные функции позволяют применять теоретически неограниченное количество фактических параметров. Обязательным является только параметр char *format – «форматная строка», внутри которой с помощью спецификаций преобразования определяется реальное количество параметров, участвующих в обменах.

<тело функции> - это часть определения функции, представляющая программный блок, т.е. ограниченный фигурными скобками фрагмент текста на языке С, размещенный непосредственно вслед за заголовком функции. Особенность С состоит в невозможности внутри тела функции определить другую функцию: определения функций не могут быть вложенными.

Для завершения (прерывания) работы функции служит оператор return. Существует две формы этого оператора:

§ return; // Возврат без передачи результата

§ return <выражение>; // Возврат значения

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

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

Описание функций

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

<тип> <имя_функции>(<спецификация параметров>);

В отличие от заголовка функции в ее прототипе могут не указываться имена формальных параметров, например эквивалентны

double Func(int n, double x);

double Func(int, double);

 

Вызов функции

Вызов функции реализуется выражением с операцией «круглые скобки». При этом используется следующий синтаксис:

<обозначение_функции> (<список фактических параметров>);

Обычно в качестве <обозначение_функции> выступает ее имя. Кроме того, функцию можно обозначить, разыменовав указатель на нее. Этот способ будет рассмотрен в дальнейшем.

<список фактических параметров>, называемых по аналогии с математикой аргументами – это список выражений, количество которых равно числу формальных параметров функции (исключение составляют функции с переменным количеством параметров). Соответствие между формальными и фактическими параметрами устанавливается по их взаимному расположению в списках.

Между формальными и фактическими параметрами должно быть соответствие по типам. Если типы не совпадают – включается механизм преобразования типов (если проведение такого преобразования допустимо).








Дата добавления: 2016-04-14; просмотров: 751;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.