Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 6,7,8 базовый Си.docx
Скачиваний:
4
Добавлен:
16.11.2018
Размер:
117.96 Кб
Скачать

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

Прежде чем использовать функцию, ее нужно определить

Синтаксис:

<Тип результата> <имя функции> ([<декларация аргументов>])

{

<Декларации> / * тело

<Инструкции> функции * /

};

Могут быть опущены отдельные компоненты этого определения:

    1. если опущено <тип результата>, то по умолчанию тип результата функции - int ;

    2. если опущена <декларация аргументов>, то список аргументов пуст (), в этом случае функция без аргументов ;

    3. если опущенi <декларации> в <теле функции>, то в такой функции нет локальных переменных ;

    4. если опущенi <инструкции> в <теле функции>, то не имеет исчисления результата для этой функции - это "пустая функция" (заглушка)

Пример 1: минимальная функция.

dummy () {};

Оператор () - высший приоритет, лiвоасоцiативний.

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

7.3 Функции, вызывающие, I функции, вызываемые

Рассмотрим программу с такой структурой.

Главная функция (main) вызывает сначала вспомогательное функцию a (которая в свою очередь вызывает вспомогательное функцию b ), а затем - вспомогательная функция b .

Функция, которая отдает управление (управление), называется функцией, вызывающий.

Функция, которая получает управление (управление), называется функцией, вызываемой.

функция, которая вызывает | функция, вызываемая

_________________________ |___________________________

имя | по отношению к | имя | по отношению к

______|___________________|_______|____________________

main | a, b | a | main

a | b | b | a, main

______|___________________|_______|____________________

Во входном файле Си-программы функции могут быть расположены в произвольном порядке:

Пример 2: все варианты программ эквивалентные.

Все функции в языке Си независимые друг от друга. Не существует пидпорядкованостi (вкладеностi) функций.

7.4 Связи по данным между функциями

Связи по данным между функциями в языке Си организуется тремя способами:

  • через аргументы;

  • через возвращаемые;

  • через внешние переменные.

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

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

Значение, возвращаемое функцией, может быть в функции, вызывающей, проигнорировано.

Пример 3:

/ * вызов printf: * /

printf ("как инструкция");

/ * Printf возвращает результат: * /

if (res = printf ("как выражение"))

dummy (); / * успех * /

else

exit (-1); / * выход в MS-DOS * /

7.4.2 Инструкция return (возврат)

Возвращает результат из вызываемой функции, в с функцию, которая вызывает.

Синтаксис:

return <выражение>; / * если выражение простой * /

return (<выражение>); / * если выражение сложное * /

Семантика:

  • приведение к типу результата, который объявлен в функции, вызывающей;

  • функция, которая вызывает, может игнорировать значение, которое возвращает функция, вызываемая;

  • <Выражение> после фразы return может быть отсутствующим, тогда эта функция не возвращает;

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

  • в функции возможны несколько инструкций return , если они возвращают значение одного типа;

  • если же различные инструкции return возвращают функцию, вызывающий, данные разных типов, то программист отвечает за качество работы такой функции;

  • если функция не возвращает результат, то в ее объявлении задается тип void ( пусто ) как тип результата i в ее теле не нужна инструкция возврата return .