Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессорная техника.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
5.93 Mб
Скачать

Видимость переменных.

Важное значение имеет место в программе, где происходит описание переменных. От этого места зависит доступ к переменной.

Переменные:

  • Глобальные.

  • Локальные.

К глобальным относятся те переменные, доступ к которым возможен из любого места программы (переменная «видна» из любого места программы).

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

Глобальные переменные объявляются вне любых функций. Локальные могут объявляться только сразу после левой фигурной скобки () – это соглашение относится и к функциям и к любым ветвлениям в программе.

Int global;

Void second ( )

unsigned lokal_2;

...

void first ( )

long lokal_1;

...

char lokal_3;

...

Локальные переменные не занимают постоянно память.

Компилятор языка Си разделяет переменные в свободной ОЗУ.

ОЗУ

Свободная часть.

Heep (куча)

Системные программы.

Классы хранения переменных.

По способу хранения переменных в памяти они делятся на классы:

  1. Автоматические – переменные, для которых память выделяется по мере необходимости. Они присутствуют лишь в том блоке, где объявлены.

  2. Регистровые – переменные хранятся во внутренних регистрах микропроцессора (сверхоперативная память), используются только внутри блока.

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

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

Модули можно компилировать по отдельности: упрощается написание и отладка программы (прочитать текст модулей после компиляции нельзя).

Auto – для автоматических переменных.

Regicter – для регистровых переменных.

Static – для статических переменных.

Extern – для внешних переменных.

Формат: класс тип имя.

По умолчанию локальные переменные – с классом auto, глобальные переменные – static, если указан класс переменной, но не указан тип, то по умолчанию int.

Размещение переменных в регистрах позволяет получить максимальную скорость программы, но при этом нарушается работа компиляторов.

Пример:

Static int a;

Double z;

Static b;

Auto int c; //ошибка

Func ( )

int d;

auto char e;

static double i;

Файл first.c

Файл second.c

Int a;

Void F1 (void)

Static int b;

...

Void F2 (void)

Extern int b;

...

Extern int b;

Int c;

Void F3 (void)

Extern int a

...

Void F4 (void)

...

Переменная

F1

F2

F3

F4

A

Доступна

Доступна

Доступна

Недоступна

B

Доступна

Доступна

Доступна

Доступна

C

Недоступна

Недоступна

Доступна

Доступна