Инструкции break, continue. Инструкция goto и метки. Пустой оператор
несколько таких операторов, то это считается ошибкой.
По метке можно передать управление в блок, в тело цикла, в условный оператор и оператор switch, но при передаче в блок нужно быть осторожным, т.к. может быть пропущена инициализация.
Нельзя с помощью goto передать управление на case и default или переключатель.
Наиболее типична ситуация использования операции goto в нек-рых глубоко вложенных структурах.
For(…)
{if (error code)
goto exit;
--} exit;- - - -
Пустой оператор
состоит из ; При выполнении его ничего не происходит. Используется в операторах do, for, while, if в случаях, когда тело оператора не требуется, но оно должно быть.
For(…){
For(…){
while(…){
if(…) go t end;
}}}
end:; }
Классы памяти.
Класс памяти выделяется для переменных определенным спецификатором класса памяти, определяемых под переменные. Класс памяти определяет время жизни и область действия объекта, связанные с понятием блока программы. Существует два типа блока: составной оператор и определители ф-ции, состоящие из составного оператора, включающего тело ф-ции + заголовок ф-ции. Блоки могут включать в себя составные операторы, но не могут включать определение ф-ции , внутренние блоки наз вложенными, а внешние- объемлющими.
Время жизни – это интервал времени, в течение к-рого програмный объект существует. Время жизни может быть глобальным или локальным. Объект с глобальным временем жизни существует и имеет определенное значение в течение всего времени выполнения программы. Переменной с локальным временем жизни каждый раз выделяется новая ячейка памяти, когда управление передается блоку, к-рым она определяется. Когда управление возвращается из блока, переменная теряет свое значение.
Переменная с классом auto явл локальной для каждого вызова блока и теряет свое значение при выходе из блока. Она должна явно инициализироваться, иначе ее содержимое имеет неопределенное значение.
Класс памяти static указывает на то, что переменная явл локализованой в блоке, но сохраняет свое значение при повторном входе в блок.
Класс памяти extern означает, что переменная сохраняет свое значение в течение всего времени выполнения программы.
Переменная класса памяти register хранится, если это возможно , в регистре, для повышения скорости выполнения программы. Время жизни для переменной этого класса такое же как для auto. Регистровая память может быть назначена только для типов int и указателей ,имеющих тот же размер, что и int. Если переменная объявлена с классом register , а свободных не оказалось, то ей назначают класс auto.Объкты класса auto и register имеют локальное время жизни, а объекты классов static и extern – гловальное, но точный смысл
Классы памяти.
каждого из идентефикаторов зависит от того, а каком уровне, внутреннем или внешнем, объявлена переменная и от того, явл объект ф-цией или переменной.
Функции. Определение ф-ций.
Любая программа состоит только из ф-ций. Ф-ция – это независимая совокупность объявлений и инструкций, приводящая к решению определенной задачи. Каждая ф-ция имеет имя, для вызова ф-ции. В каждой программе есть только одна ф-ция именем main, с к-рой начинается выполнение программы. При вызове ф-ции ей могут быть переданы параметры посредством переменных. Ф-ция может возвращать значение, это значение- оновной результат ф-ции.
С использованием ф-ции в Си связаны:
1) определение ф-ции
2) объявление ф-ции
3) вызов ф-ции
Определение ф-ции
Определение ф-ции задает имя, кол-во и тип формальных параметров и тело ф-ции. Оно может определять тип возвращаемого значения и класс памяти ф-ции.
[спецификатор_класса_памяти][спецификатор_типа]
имя([спецификатор_формальных_параметров])
тело ф-ции
Класс памяти ф-ции может быть static или extern. По умолчанию считается extern.Спецификатор типа задает тип возвращаемого ф-цией значения и может быть любого основного типа, типа структуры или объединения. Если спецификатор типа не задан, то считается, что ф-ция возвращает значение типа int. Имя ф-ции может быть задано со *, это означает, что ф-ция возвращает указатель. ф-ция не может возвращать массив или ф-цию. Тип возвращаемого значения в определении ф-ции должен соответствовать типу в объявлении ф-ции. Ф-ция возвращает значение, если ее выполнение заканчивается return[выражение]. Если оператор return не задан или не содержит выражение, то ф-ция не возвращает никакого значения, в этом случае спецификатор типа указывается с помощью слова void. Если ф-ция объявлена со спецификатором типа, а значение не возвращается, то результат не определен. Список формальных параметров- это последовательность объявлений формальных параметров, разделенных запятыми.
[register]спец_типа [имя] Список формальных параметров может быть пустым. В списке формальных параметров указывается слово void. Порядок, типы и число формальных параметров в определении ф-ции должны совпадать с порядками, типами и числом параметров в объявлении и всех вызовах ф-ции. Язык Си позволяет задавать переменное число аргументов. Список формальных параметров заканчивается (,…) Однако предполагается, что ф-ция имеет по крайней мере столько аргументов, сколько задано перед последней запятой. Ф-ции может быть передано большее число аргументов, указанных до(,…), над такими аргументами не производится контроль типов. Тело ф-ции – это составной оператор, соединяющий объявления и инструкции. Запрещается внутри тела ф-ции помещать другие ф-ции. Все переменные, объявленые в теле ф-ции, имеют класс памяти auto. Под
Функции. Определение ф-ций.
каждую из переменных при вызове ф-ции отводится память в стеке и производится инициализация., после чего управление передается первому оператору ф-ции. Параметры передаются в ф-цию посредством копирования аргументов, потому в теле ф-ции нельзя изменять значения аргументов.