:: amali Qayd qilingandan, lokal o’zgaruvchi e’loni xuddi shu nomdagi global o’zgaruvchini “berkitadi” va bu joydan global o’zgaruvchiga murojat qilish imkoni bo’lmay qoladi. S++ tilida bunday hollarda ham global o’zgaruvchiga murojat qilish imkoni mavjud va buning uchun ko’rinish sohasiga ruxsat berish amalidan foydalanish kerak bo’ladi: o’zgaruvchi oldigi ikkita nuqta (“::”) qo’yish zarur bo’ladi. Misol tariqasida quyidagi programani keltiramiz:
#inilude //global o’zgaruvchi e’loni
int uzg=5;
int main( )
{
//lokal o’zgaruvchi e’loni
int uzg=70;
//lokal o’zgaruvchini chop etish
cout << uzg << ‘/n’;
//global o’zgaruvchini chop etish
cout << ::uzg << ‘/n’;
return 0;
}
Programma ishlashi natijasida ekranga oldin 70 va kuyin 5 sonlari chop etiladi.
Xotira sinflari O’zgaruvchilarning ko’rinish sohasi va amal qilish vaqtini aniqlovchi o’zgaruvchilar modifikatori mavjud.
Modifikator
Qo’llanishi
Amal qilish sohasi
Yashash davri
auto
Global
blok
vaqtincha
register
Lokal
blok
vaqtincha
exteru
Global
blok
vaqtincha
static
Lokal
blok
doimiy
Global
fayl
doimiy
volatile
Global
fayl
doimiy
Avtomat o’zgaruvchilar auto modifikatori lokal o’zgaruvchilar e’lonida ishlatiladi. Odatda lokal o’zgaruvchilar e’lonida bu modifikator kelishuv bo’yicha qo’llaniladi va shu sababli amalda uni tushurib qodiriladi:
# include int main( )
{
auto int X= 2; // int X = 2; bilan ekvivalent
cout <returu 0;
}
auto modifikatori blok ichida e’lon qilingan lokal o’zgaruvchilarga qo’llaniladi. Bu o’zgaruvchilar blokdan chiqishi bilan avtomat ravishda yo’q bo’lib ketadi.
Registr o’zgaruvchilar register modifikatori kompilyatorga ko’rsatilgan o’zgaruvchini protsessor registrlariga joylashtirishga harakat qilishni tayinlaydi. Agar bu harakat natija bermasa o’zgaruvchi auto turidagi lokal o’zgaruvchi sifatida amal qiladi.
O’zgaruvchilarni registrlarda joylashtirish programma kodini bajarish tezligi bo’yicha optimallashtiradi, chunki protsessor xotiradagi berilganlarga nisbatan registrdagi qiymatlar bilan ancha tez ishlaydi. Lekin registrlar soni cheklanganligi uchun har doim ham o’zgaruvchilarni registrlarda joylashtirishning iloji bo’lmaydi.
#include < iostream.h >
int main( )
{
register int Reg;
…
returu 0;
}
register modifikatori faqat lokal o’zgaruvchilariga nisbatan qo’llaniladi, global o’zgaruvchilarga qo’llash kompilyatsiya xatosiga olib keladi.