Клас пам'яті (англ. Storage class) — поняття в мовах програмування, визначає місце зберігання об'єктів програми (наприклад, функцій та змінних) в оперативній пам'яті або регістрах процесора та час існування таких об'єктів.
В окремих мовах програмування існують оператори визначення класу пам'яті, в інших клас пам'яті призначається на розсуд транслятора.
Класи пам'яті в мовах C та C++
Мови C та дають змогу безпосередньо визначати клас пам'яті об'єктів в програмі. Кожен об'єкт може належати лише до одного класу пам'яті, який визначається відповідними ключовими словами або встановлюється компілятором за умовчанням:
- автоматичні — для змінних, визначених в функціях або складених операторах (блоках);
- зовнішні — для змінних, визначених за межами функцій, також для імен функцій.
Клас пам'яті може бути встановлений ключовими словами:
auto
— автоматичний локальний об'єкт програми. Автоматичні змінні створюються під час кожного входу в функцію або блок і знищуються у разі виходу з блоку або функції. Як наслідок, вони можуть бути доступні лише в межах відповідної функції або блоку від точки свого визначення. Такі об'єкти не зберігають значення між входами в функцію або блок. Якщо автоматичний об'єкт не ініціалізований, його значенням буде «сміття» (що є наслідком розміщення цих об'єктів в стеку та перерозподілу стеку між входами у функцію або блок);static
— статичний об'єкт програми. Статичні об'єкти створюються під час запуску програми і знищуються у разі її завершення. Якщо статичний об'єкт не ініціалізований, його значенням буде «0» або еквівалентне значення. В свою чергу:- статичні локальні об'єкти доступні лише в межах функції або блоку від точки свого визначення до кінця блоку або функції; об'єкти зберігають значення між входами в функцію або блок;
- статичні глобальні об'єкти (змінні і функції) доступні лише в межах модуля, в якому вони визначені;
extern
— зовнішній глобальний об'єкт. Використовується для звернення до глобальних об'єктів програми (змінних), визначених в іншому модулі програми (при цьому для об'єкта має бути одне визначення — без extern, і може бути декілька декларацій в різних модулях — всі з extern);register
— регістрова змінна. В сучасних компіляторах ігнорується, оскільки компілятор здатен забезпечити більш ефективне використання регістрів процесора, ніж програміст; в старих реалізаціях компіляторів використання класу register давало змогу значно підвищити швидкість виконання програми.
Посилання
- Класс памяти [ 30 Грудня 2016 у Wayback Machine.] (рос.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Klas pam yati angl Storage class ponyattya v movah programuvannya viznachaye misce zberigannya ob yektiv programi napriklad funkcij ta zminnih v operativnij pam yati abo registrah procesora ta chas isnuvannya takih ob yektiv V okremih movah programuvannya isnuyut operatori viznachennya klasu pam yati v inshih klas pam yati priznachayetsya na rozsud translyatora Klasi pam yati v movah C ta C Movi C ta C dayut zmogu bezposeredno viznachati klas pam yati ob yektiv v programi Kozhen ob yekt mozhe nalezhati lishe do odnogo klasu pam yati yakij viznachayetsya vidpovidnimi klyuchovimi slovami abo vstanovlyuyetsya kompilyatorom za umovchannyam avtomatichni dlya zminnih viznachenih v funkciyah abo skladenih operatorah blokah zovnishni dlya zminnih viznachenih za mezhami funkcij takozh dlya imen funkcij Klas pam yati mozhe buti vstanovlenij klyuchovimi slovami auto avtomatichnij lokalnij ob yekt programi Avtomatichni zminni stvoryuyutsya pid chas kozhnogo vhodu v funkciyu abo blok i znishuyutsya u razi vihodu z bloku abo funkciyi Yak naslidok voni mozhut buti dostupni lishe v mezhah vidpovidnoyi funkciyi abo bloku vid tochki svogo viznachennya Taki ob yekti ne zberigayut znachennya mizh vhodami v funkciyu abo blok Yaksho avtomatichnij ob yekt ne inicializovanij jogo znachennyam bude smittya sho ye naslidkom rozmishennya cih ob yektiv v steku ta pererozpodilu steku mizh vhodami u funkciyu abo blok static statichnij ob yekt programi Statichni ob yekti stvoryuyutsya pid chas zapusku programi i znishuyutsya u razi yiyi zavershennya Yaksho statichnij ob yekt ne inicializovanij jogo znachennyam bude 0 abo ekvivalentne znachennya V svoyu chergu statichni lokalni ob yekti dostupni lishe v mezhah funkciyi abo bloku vid tochki svogo viznachennya do kincya bloku abo funkciyi ob yekti zberigayut znachennya mizh vhodami v funkciyu abo blok statichni globalni ob yekti zminni i funkciyi dostupni lishe v mezhah modulya v yakomu voni viznacheni extern zovnishnij globalnij ob yekt Vikoristovuyetsya dlya zvernennya do globalnih ob yektiv programi zminnih viznachenih v inshomu moduli programi pri comu dlya ob yekta maye buti odne viznachennya bez extern i mozhe buti dekilka deklaracij v riznih modulyah vsi z extern register registrova zminna V suchasnih kompilyatorah ignoruyetsya oskilki kompilyator zdaten zabezpechiti bilsh efektivne vikoristannya registriv procesora nizh programist v starih realizaciyah kompilyatoriv vikoristannya klasu register davalo zmogu znachno pidvishiti shvidkist vikonannya programi PosilannyaKlass pamyati 30 Grudnya 2016 u Wayback Machine ros