Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Обл.видимости.Классы памяти

Читайте также:
  1. Аристотель об обучении и памяти
  2. Архитектура ПК. Центральные и периферийные устройства, средства ввода и средства вывода данных. Оперативная память и средства внешней памяти. Характеристики процессора.
  3. Виды и типы памяти. Воспроизведение. Забывание как психологическая проблема. Кривая забывания Эббингауза. Позиционная кривая воспроизведения.
  4. Виды памяти
  5. Виды памяти, их характеристика.
  6. Вопрос 4. Процессы памяти
  7. Вопрос 5. Законы памяти. Мнемотехнические приемы запоминания
  8. Восстановление памяти по средствам медицинских препаратов
  9. Выделение и освобождение динамической памяти.
  10. Диагностика развития памяти.

Объявление вводит имя(переем-ю,идентифекатор) в обл. видимости,это значит,что имя м.исп. в опр-ой части текста пр-мы. Для имени объявлены в теле ф-ции(локальное имя) ОВнач-ся с место объявление ф-ции и до конца ф-ции.Имя наз.глобальным, если оно объявлено вне люб.ф-ции,класса или пространства имен. ОВ глобальных имен – от их объявления до конца файла. Объявление ф-ции в блоки; м. скрыть объявление этого имени в охватывающем блоке или глобальное объявление имени.

Пр, int x; void f ()

{

int x;

x=1;

………

{

int x;

x=2;}

}…..

int *p=&x

К скрытому глобальному имени м. обратиться с пом.оп-ра разрешения обл.видимости(::).

Пр, int x=0;

void f ()

{

int x=1;

:: x=2;

printf(“% d”,x)

}

printf(“% d”,x)

Локальная перем-я инициализирует в момент вып-я строки сод-щей ее опр-е. По умолчанию это происходит при каждом вызове ф-ции и каждый раз соз.новая перем-я.Если локальная перем-я объявляется, как static, то при всех вызовов ф-ции для хр-я ее зн-я будет исп. единственный статически размещенный в памяти объект (д-й механизм реализован на С++).

Пр, void f(int a)

{while(a--);

{static int n=0;

int x=0;

printf(“n= = % d,x = =% d” \n,n++,x)

int main()

{

f(3);

}

В рез-те на экран выведет:

n= =0, x= =0

n= =1, x= =0

n= =2, x = =0

Статистические перем-е – это аналог глобальных перем-х,кот. описаны локальны.

Классы памяти в C и C++Переменная в этих языках должна принадлежать ровно к одному классу памяти, что указывается с помощью ключевого слова, который пишется перед типом переменной.auto — автоматическая (локальная), динамическая переменная. Автоматические переменные создаются при входе в функцию и уничтожаются при выходе из неё. Они видны только внутри функции или блока, в которых определены.static — статическая переменная (локальная). Статические переменные имеют такую же область действия, как автоматические, но они не исчезают, когда содержащая их функция закончит свою работу. Компилятор хранит их значения от одного вызова функции до другого.

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

register — регистровая переменная (локальная). Это слово является всего лишь «пожеланием» компилятору помещать частоиспользуемую переменную в регистры процессора для ускорения программы.

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

переменные, описанные внутри функции или блока, считаются локальными (auto)

переменные, описанные вне всех функций, считаются внешними.

функции считаются внешними.




Дата добавления: 2015-01-30; просмотров: 26 | Поможем написать вашу работу | Нарушение авторских прав

1 | <== 2 ==> | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав