Tashqi o’zgaruvchilar va funktsiyalar Agar programma bir nechta moduldan iborat bo’lsa, ular qandaydir o’zgaruvchi orqali o’zaro qiymat almashishlari mumkin (fayllar orasida). Buning uchun o’zgaruvchi modulda global tarzda e’lon qilinadi va boshqa faylda (modulda) u ko’rinishi uchun extern modifikatori bilan e’lon qilinadi. Boshqa modifikatorlarda farqli ravishda extern modifikatori o’zgaruvchini boshqa faylda e’lon qilinganligini bildiriladi. Tashqi o’zgaruvchilar ishlatilgan irogrammani ko’raylik.
//Sarlavha.h faylida
void Bayroq_Almashsin(void);
// modul_1.cpp faylida
bool Bayroq;
void Bayroq_Almashsin(void);
{Bayroq = !Bayroq; }
// masala.cpp faylida
# include < iostream.h >
# include # include extern bool Bayroq;
int main( )
{
Bayroq_Almashsin( )
if (Bayroq)
cout << “Bayroq TRUE” <else cout << “Bayroq FALSE” <return 0;
}
Oldin sarlavha.h faylida Bayroq_Almashsin( ) funktsiya sarlavhasi e’lon qilinadi, keyin modul_1.srr faylida tashqi o’zgaruvchi e’lon qilinadi va Bayroq_Almashsin( ) funktsiyasi tanasi aniqlanadi. Va nihoyat, masala.cpp faylida Bayroq o’zgaruvchisi tashqi deb e’lon qilinadi.
Statik o’zgaruvchilar Statik o’zgaruvchilar static modifikatari bilan e’lon qilinadi va o’z xususiyatiga ko’ra global o’zgaruvchilarga o’xshaydi. Agar bu turdagi o’zgaruvchi global bo’lsa, uning amal qilish sohasi – e’lon qilingan joydan to fayl oxirigacha bo’ladi. Agar statik o’zgaruvchi funktsiya yoki blok ichida e’lon qilinadigan bo’lsa, u funktsiya yoki blokka birinchi kirishda initsializatsiya qilinadi. O’zgaruvchining bu qiymati funktsiyaning keyingi chaqiruvlarida yoki blokka kirishda saqlanib qoladi va bu qiymatni o’zgartirish mumkin bo’ladi. Statik o’zgaruvchilarni tashqi deb e’lon qilib bo’lib bo’lmaydi.
Agar statik o’zgaruvchi initsalizatsiya qilinmagan bo’lsa, uning birinchi murojatdagi qiymati 0 hisoblanadi.
Misol tariqasida birorta funktsiyani necha marotaba chaqirganligini aniqlash masalasini ko’raylik:
#include int Count(void);
int main( )
{
int result;
for (int i=0; i<30; i++ )
result=Count( );
cout << result;
return 0;
}
int Count (void)
{
static short counter=0;
…
counter++;
return counter;
}
Bu yerda asosiy funktsiyadan counter statik o’zgaruvchiga ega Count( ) funktsiyasi 30 marta chaqiriladi. Funktsiya birinchi marta chaqirilganda counter statik o’zgaruvchiga 0 qiymatini qabul qiladi va qiymati 1 ortgan holda funktsiya qiymati sifatida qaytariladi. Statik o’zgaruvchilar qiymatini funktsiyani bir chaqirilishidan ikkinchisiga saqlanib qolinishi sababli, keyingi murojaatlarda couter qiymati bittaga ortib boradi.