Студопедия

КАТЕГОРИИ:

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



Змінні. Клас пам'яті.




Для завдання класу пам'ятівикористовуються наступні специфікатори:

autoавтоматична змінна. Пам'ять під неї виділяється в стеку і при необхідності ініціалізувався кожного разу при виконанні оператора, що містить її визначення. Звільнення пам'яті відбувається при виході з блоку, в якому описана змінна. Час її життя — з моменту опису до кінця блоку. Для глобальних змінних цей специфікатор не використовується, а для локальних він приймається за умовчанням, тому задавати його явним чином великого сенсу не має.

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

staticстатична змінна. Час життя — постійне. Ініціалізувався один раз при першому виконанні оператора, що містить визначення змінної. Залежно від розташування оператора опису статичні змінні можуть бути глобальними і локальними. Глобальні статичні змінні видно тільки в тому модулі, в якому вони описані.

register— аналогічно auto, але пам'ять виділяється по можливості в регістрах процесора. Якщо такої можливості у компілятора немає, змінні обробляються як auto.

int а; // 1 глобальна змінна а

int main(){

int b; // 2 локальна змінна b

extern int x; // 3 змінна х визначена у іншому місці

static int з; // 4 локальна статична змінна з

а = 1; //5 присвоєння глобальної змінної

int а; //6 локальна змінна а

а = 2; //7 присвоєння локальної змінної

::а = 3; //8 присвоєння глобальної змінної

return 0;

}

int x = 4; // 9 визначення і ініціалізація х

В даному прикладі глобальна змінна а визначена поза всіма блоками. Пам'ять під неї виділяється в сегменті даних на початку роботи програми, областю дії є вся програма. Область видимості — вся програма, окрім рядків 6-8, оскільки в першій з них визначається локальна змінна з тим же ім'ям, область дії якої починається з точки її опису і закінчується при виході з блоку. Змінні b і з — локальні, область їх видимості — блок, але час життя різний: пам'ять під b виділяється в стеку при вході в блок і звільняється при виході з нього, а змінна з розташовується в сегменті даних і існує весь час, поки працює програма.



Якщо при визначенні початкове значення змінних явним чином не задається, компілятор привласнює глобальним і статичним змінним нульове значення відповідного типу. Автоматичні змінні не ініціалізувалися.

Ім'я змінної повинне бути унікальним в своїй області дії (наприклад, в одному блоці не може бути два змінних з однаковими іменами).


Дата добавления: 2014-12-03; просмотров: 85; Нарушение авторских прав







lektsii.com - Лекции.Ком - 2014-2021 год. (0.013 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты