КЛЮЧЕВЫЕ СЛОВА: 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т того, где переменная описана и какое ключевое слово (если оно есть) используется.

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

2.3 Ключевые Слова

Из книги C++ автора Хилл Мюррей

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


11. Идентификатор. Ключевые слова

Из книги Программирование автора Козлова Ирина Сергеевна

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


Ключевые слова virtual и override

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Ключевые слова virtual и override Полиморфизм обеспечивает подклассам возможность задать собственную реализацию методов, определенных базовым классом. Чтобы соответствующим образом изменить наш проект, мы должны рассмотреть применение ключевых слов C# virtual и override. Если в


Ключевые слова – начало пути

Из книги Добавьте в корзину. Ключевые принципы повышения конверсии веб-сайтов автора Айзенберг Джеффри

Ключевые слова – начало пути Наша сотрудница Мелисса как раз пыталась выйти на след, когда вводила в поисковой системе ключевые слова «Снять квартиру в Монреале».Этой фразой она выразила свое намерение, то есть обозначила след, который пыталась найти. Внимание Мелиссы


1.2.1. Ключевые слова и идентификаторы

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

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


5.2.3. Альтернативные расширенные ключевые слова

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

5.2.3. Альтернативные расширенные ключевые слова В gcc у каждого расширенного ключевого слова (ключевые слова, не описанные стандартом ANSI/ISO) есть две версии: само ключевое слово и ключевое слово, окруженное с двух сторон двумя символами подчеркивания. Когда компилятор


Ключевые слова

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

Ключевые слова Ключевые слова — это предопределенные идентификаторы, которые имеют специальное значение для компилятора языка Си. Их использование строго регламентировано. Имена объектов программы не могут совпадать с ключевыми словами.список ключевых


Ключевые слова

Из книги Fiction Book Designer 3.2. Руководство по созданию книг автора

Ключевые слова Список «key words» – это список ключевых слов, которые Book Designer использует для поиска названий глав в процессе автоматического форматирования книги. Вы можете добавить или исключить ключевые слова из списка при помощи кнопок, расположенных справа от


Ключевые слова

Из книги Как заработать на фотографии в Интернете автора Зьомко Ольга

Ключевые слова Количество допустимых ключевых слов на каждом сайте разное. Больше всего их на сайте Sutterstock.com. Здесь можно выбрать до 50 различных ключевых слов, подглядывая в русско-английский словарь. Как уже писалось выше, фотографии крайне часто получают отказ по


Ключевые слова

Из книги Язык Си - руководство для начинающих автора Прата Стивен

Ключевые слова О ключевых словах мы уже тоже рассказали достаточно много. Если у вас возникли проблемы, значит, это ваше боевое крещение или простая невнимательность. Частотность отказов, связанных с ключевыми словами, вообще трудно сравнить с чем-либо. Поэтому при


ПРИЛОЖЕНИЕ Б. КЛЮЧЕВЫЕ СЛОВА ЯЗЫКА СИ

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

ПРИЛОЖЕНИЕ Б. КЛЮЧЕВЫЕ СЛОВА ЯЗЫКА СИ Ключевые слова в языке являются словами, выражающими действия этого языка. Ключевые слова языка Си зарезервированы, т. е. вы не можете использовать их для других целей, таких как задание имени переменной. Ключевые слова выполнения


Ключевые слова

Из книги HTML, XHTML и CSS на 100% автора Квинт Игорь

Ключевые слова Новые ключевые слова могли быть использованы в базе данных, созданной в InterBase 4.x или 5.x, в качестве идентификаторов каких-либо объектов. Для перехода к диалекту 3 необходимо переименовать эти объекты, например YEAR -> YEAR 1 или YEAR->"year" (в 3-м диалекте ключевые


Новые ключевые слова

Из книги Описание языка PascalABC.NET автора Коллектив РуБоард

Новые ключевые слова В Interbase 7 появились новые ключевые слова, связанные с вышеупомянутым типом BOOLEAN:BOOLEAN, TRUE, FALSE, UNKNOWNХочется отметить, что в предыдущей версии (6.5) были добавлены следующие ключевые слова:ROWS, TIES, PERCENTИх значение разъяснено в документации к InterBase


Ключевые слова

Из книги автора

Ключевые слова В CSS, как и в других языках программирования, есть ключевые слова. Помните, что в CSS они не должны заключаться в кавычки («…» или …). Так, например, red – это ключевое слово, а «red» – нет. Для большего понимания приведу еще примеры недопустимого написания:width:


Ключевые и зарезервированные слова

Из книги автора

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


Идентификаторы и ключевые слова

Из книги автора

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