КЛЮЧЕВЫЕ СЛОВА: auto, extern, static, register
КЛЮЧЕВЫЕ СЛОВА: auto, extern, static, register
Одно из достоинств языка Си состоит в том, что он позволяет управлять ключевыми механизмами программы. Классы памяти языка Си - пример такого управления; они дают возможность определить, с какими функциями связаны какие переменные и как долго переменная сохраняется в программе. Классы памяти - первая тема данной главы.
Программирование, точно так же как написание романа (или даже письма),- это не просто знание языковых правил - это нечто большее. В данной главе мы рассмотрим несколько полезных функций. При этом попытаемся привести некоторые соображения, используемые при конструировании функций. В частности, сделаем упор на значение модульного подхода, разбивающего программы на выполнимые задачи. Сначала, однако, обсудим классы памяти.
КЛАССЫ ПАМЯТИ И ОБЛАСТЬ ДЕЙСТВИЯ
Мы уже упоминали раньше, что локальные переменные известны только функциям, содержащим их. В языке Си предполагается также, что о глобальных переменных "знают" сразу несколько функций. Предположим, например, что и main( ), и critic( ) имеют доступ к переменной units. Это будет иметь место, если отнести units к "внешнему" классу памяти, как показано ниже:
/* глобальная переменная units */
int units; /* внешняя переменная */
main( )
{
extern int units;
printf (" Сколько фунтов масла находится в бочонке? ");
scanf (" %d" , &units);
while (units != 56) critic( );
printf(" Вы должны поискать в справочнике ! ");
} critic( )
{
extern int units;
printf (" He повезло, дружок. Попытайся снова. ");
scanf (" %d" , &units);
}
Вот полученный результат:
Сколько фунтов масла находится в бочонке?
14
Не повезло, дружок. Попытайся снова.
56
Вы должны поискать в справочнике!
(Мы сделали это.)
Обратите внимание, что второе значение units было прочитано функцией critic( ), однако main() также "узнала" это новое значение, когда оно вышло из цикла while.
Мы сделали переменную units внешней, описав ее вне любого определения функции. Далее, внутри функций, использующих эту переменную, мы объявляем ее внешней при помощи ключевого слова extern, предшествующего спецификации типа переменной. Слово extern предлагает компьютеру искать определение этой переменной вне функции. Если бы мы опустили ключевое слово extern в функции critic( ), то компилятор создал бы в функции critic новую переменную и тоже назвал бы ее units. Тогда другая переменная units() [которая находится в main()] никогда не получила бы нового значения.
Каждая переменная, как мы знаем, имеет тип. Кроме того, каждая переменная принадлежит к некоторому классу памяти. Есть четыре ключевых слова, используемые для описания классов памяти: extern (для внешнего), auto (для автоматического), static и register. До сих пор мы не обращали внимание на классы памяти, так как переменные, описанные внутри функции, считались относящимися к классу auto, если они не описывались иначе (по умолчанию они относились к классу auto).
Определение класса памяти переменной зависит oт того, где переменная описана и какое ключевое слово (если оно есть) используется.
Класс памяти позволяет установить два факта. Во-первых, определить, какие функции имеют доступ к переменной. (Пределы, до которых переменная доступна, характеризуют ее "область действия".) Во-вторых, определить, как долго переменная находится в памяти. Теперь перейдем к свойствам каждого типа.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Ключевые слова
Ключевые слова В CSS, как и в других языках программирования, есть ключевые слова. Помните, что в CSS они не должны заключаться в кавычки («…» или …). Так, например, red – это ключевое слово, а «red» – нет. Для большего понимания приведу еще примеры недопустимого написания:width:
Ключевые и зарезервированные слова
Ключевые и зарезервированные слова К ключевым словам относятся предопределенные идентификаторы, которые образуют ядро языка JavaScript. Эти слова имеют особый смысл и выполняют определенные функции. Ключевые слова не могут использоваться для пользовательских
5.2.3. Альтернативные расширенные ключевые слова
5.2.3. Альтернативные расширенные ключевые слова В gcc у каждого расширенного ключевого слова (ключевые слова, не описанные стандартом ANSI/ISO) есть две версии: само ключевое слово и ключевое слово, окруженное с двух сторон двумя символами подчеркивания. Когда компилятор
Ключевые слова – начало пути
Ключевые слова – начало пути Наша сотрудница Мелисса как раз пыталась выйти на след, когда вводила в поисковой системе ключевые слова «Снять квартиру в Монреале».Этой фразой она выразила свое намерение, то есть обозначила след, который пыталась найти. Внимание Мелиссы
Ключевые слова
Ключевые слова Новые ключевые слова могли быть использованы в базе данных, созданной в InterBase 4.x или 5.x, в качестве идентификаторов каких-либо объектов. Для перехода к диалекту 3 необходимо переименовать эти объекты, например YEAR -> YEAR 1 или YEAR->"year" (в 3-м диалекте ключевые
Новые ключевые слова
Новые ключевые слова В Interbase 7 появились новые ключевые слова, связанные с вышеупомянутым типом BOOLEAN:BOOLEAN, TRUE, FALSE, UNKNOWNХочется отметить, что в предыдущей версии (6.5) были добавлены следующие ключевые слова:ROWS, TIES, PERCENTИх значение разъяснено в документации к InterBase
11. Идентификатор. Ключевые слова
11. Идентификатор. Ключевые слова Идентификатором называется последовательность цифр, букв и специальных символов. При этом первой стоит буква или специальный символ. Для получения идентификаторов можно использовать строчные или прописные буквы латинского алфавита.
1.2.1. Ключевые слова и идентификаторы
1.2.1. Ключевые слова и идентификаторы Ключевые (или зарезервированные) слова в Ruby обычно не применяются ни для каких иных целей. Вот их полный перечень:BEGIN END alias and beginbreak case class def defined?do else elsif end ensurefalse for if in modulenext nil not or redorescue retry
Ключевые слова virtual и override
Ключевые слова virtual и override Полиморфизм обеспечивает подклассам возможность задать собственную реализацию методов, определенных базовым классом. Чтобы соответствующим образом изменить наш проект, мы должны рассмотреть применение ключевых слов C# virtual и override. Если в
ПРИЛОЖЕНИЕ Б. КЛЮЧЕВЫЕ СЛОВА ЯЗЫКА СИ
ПРИЛОЖЕНИЕ Б. КЛЮЧЕВЫЕ СЛОВА ЯЗЫКА СИ Ключевые слова в языке являются словами, выражающими действия этого языка. Ключевые слова языка Си зарезервированы, т. е. вы не можете использовать их для других целей, таких как задание имени переменной. Ключевые слова выполнения
Ключевые слова
Ключевые слова Ключевые слова — это предопределенные идентификаторы, которые имеют специальное значение для компилятора языка Си. Их использование строго регламентировано. Имена объектов программы не могут совпадать с ключевыми словами.список ключевых
2.3 Ключевые Слова
2.3 Ключевые Слова Следующие идентификаторы зарезервированы для использовния в качестве ключевых слов и не могут использоваться иным образом:asm auto break case char class const continue default delete do double else enum extern float for friend goto if inline int long new operator overload public register return short sizeof static struct switch this typedef union unsigned
Ключевые слова
Ключевые слова Список «key words» – это список ключевых слов, которые Book Designer использует для поиска названий глав в процессе автоматического форматирования книги. Вы можете добавить или исключить ключевые слова из списка при помощи кнопок, расположенных справа от
Идентификаторы и ключевые слова
Идентификаторы и ключевые слова Идентификаторы служат в качестве имен программ, модулей, процедур, функций, типов, переменных и констант. Идентификатором считается любая последовательность латинских букв или цифр, начинающаяся с буквы. Буквой считается также символ
Ключевые слова
Ключевые слова Количество допустимых ключевых слов на каждом сайте разное. Больше всего их на сайте Sutterstock.com. Здесь можно выбрать до 50 различных ключевых слов, подглядывая в русско-английский словарь. Как уже писалось выше, фотографии крайне часто получают отказ по
Ключевые слова
Ключевые слова О ключевых словах мы уже тоже рассказали достаточно много. Если у вас возникли проблемы, значит, это ваше боевое крещение или простая невнимательность. Частотность отказов, связанных с ключевыми словами, вообще трудно сравнить с чем-либо. Поэтому при