Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ekzamen_infa.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
635.5 Кб
Скачать
  • Функции

Основные понятия

Функция представляет собой самостоятельный фрагмент текста программы, предназначенный для выполнения некоторой задачи. Функция имеет уникальное имя, которое используется для ее вызова. В языке C функция играет такую же роль, как и функции, подпрограммы и процедуры в других языках программирования – она позволяет один и тот же фрагмент программы использовать многократно. Использование функций придает программе модульную структуру, облегчает чтение кода и внесение в него исправлений. В общем случае функция выполняет действия и возвращает вычисленное значение в вызвавшую ее функцию. Функция получает данные при вызове через свои аргументы. Она может возвращать вычисленное значение, при этом возвращаемое значение подставляется на место вызова функции, где бы этот вызов ни находился. В качестве частного случая функция может не иметь аргументов и не возвращать значения. При этом она выполняет некоторые действия, не связанные с изменением данных.

С использованием функций в языке C связаны три понятия:

  • определение (описание действий, выполняемых функцией);

  • объявление (задание формы обращения к функции);

  • вызов.

В определении (описании) функции должны присутствовать

  • имя;

  • типы, имена и количество ее формальных параметров;

  • объявления переменных и операторы (тело функции).

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

В языке C нет требования, чтобы определение функции обязательно предшествовало вызову функции. Определение может находиться где угодно, например, за определением функции main() или в другом файле. Обязательным условием является объявление функции до ее вызова. Это необходимо для проверки соответствия типов фактических аргументов типам формальным параметров, а также типа возвращаемого функцией значения.

Объявление функции называется прототипом функции.

В прототипе функции (в C++ прототип обязателен) должны присутствовать

  • имя функции;

  • типы и число формальных параметров;

  • тип возвращаемого значения.

Формат прототипа тот же, что и у определения функции, но прототип не имеет тела функции. Заголовок оканчивается точкой с запятой.

Процедуры:

Функции, которые не возвращают значения, тип таких функций void.

  • Переменные

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

Общий вид оператора описания переменных

[класс памяти] [const] тип ИМЯ [инициализатор];

правила задания составных частей этого оператора.

  • Необязательный спецификатор класса памяти может принимать одно из значений: auto, extern, static, register.

  • Модификатор const показывает, что значение переменной изменять нельзя. Такую переменную называют именованной константой или просто константой.

  • При описании можно присвоить переменной начальное значение, это называется инициализацией. Инициализатор можно записывать в двух формах:

- со знаком равенства: = значение;

- в круглых скобках: (значение).

Константа должна быть инициализирована при объявлении. В одном операторе можно описать несколько переменных одного типа, разделяя их запятыми, например,

int a, SUM = 0;

const char S = 'A';

char t(66), z; //t=’B’,

float pi = 3.14, x(3.5), m=pi+x; //x=3.5

Если тип инициализирующего значения не совпадает с типом переменной, выполняются преобразования типа по определенным правилам.

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

Область действия идентификатора – это часть программы, в которой его можно использовать для доступа к связанной с ним области памяти. В зависимости от области действия переменная может быть локальной или глобальной.

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

Класс памяти определяет время жизни и область видимости программного объекта (в частности, переменной). Если класс памяти не указан явным образом, он определяется компилятором исходя из контекста объявления.

Время жизни может быть постоянным (в течение выполнения программы) и временным (в течение выполнения блока).

Областью видимости идентификатора называется часть текста программы, из которой допустим обычный доступ к связанной с идентификатором областью памяти. Чаще всего область видимости совпадает с областью действия. Исключением является ситуация, когда во вложенном блоке описана переменная с таким же именем. В этом случае внешняя переменная во вложенном блоке невидима, хотя он и входит в ее область действия. Тем не менее, к этой переменной, если она глобальная, можно обратиться, используя операцию доступа к области видимости ::.

Для задания класса памяти используются следующие спецификаторы.

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

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

staticстатическая переменная. Время жизни – постоянное. Инициализируется один раз при первом выполнении оператора, содержащего определение переменной. В зависимости от расположения оператора описания статические переменные могут быть глобальными и локальными. Глобальные статические переменные видны только в том модуле, в котором они описаны.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]