16
Бұл айнымалыларға жады блокқа кіргенде ғана бөлінеді және одан шыққанда
босатылады. Блоктан тыс мұндай айнымалылар болмайды.
extern – ауқымды айнымалы, ол программанның басқа жерінде
орналасады (басқа файлда немесе мәтін бойынша).
Программаның барлық
файлдарында қолжетімді болатын айнымалыларды жасау үшін қолданылады.
static – статикалық айнымалы, ол айнымалы анықталатын файл ішінде
ғана қолданылады.
register - auto жадыға ұқсас,
бірақ оларға жады процессор
регистрлерінде беріледі. Егер мұндай мүмкіндік жоқ болса, онда
айнымалылар auto ретінде өңделеді.
Мысалы:
int a; //ауқымды айнымалы
void main(){
int b; //жергілікті айнымалы
extern int x;//х айнымалысы басқа жерде анықталған
static int c;// жергілікті статикалық айнымалы
a=1;//ауқымды айнымалыға
меншіктеу
int a;// а жергілікті айнымалы
a=2;// жергілікті айнымалыға меншіктеу
::a=3;// ауқымды айнымалыға меншіктеу
}
int x=4;// х анықтау және инициализациялау
Мысалда а айнымалысы барлық блоктардың сыртында анықталған. а
айнымалысының іс-әрекеттер аймағы тек а жергілікті айнымалысы
қолданылатын жолдардан басқа барлық программа болып табылады. b және с
айнымалылары
- жергілікті, олардың көріну аймағы - блок. Жұмыс жасау
уақыттары әртүрлі: b-ға жады блокқа кіргенде бөлінеді (өйткені келісім
бойынша жады классы auto) және шыққан кезде босатылады. с (static)
айнымалысы программа барысында ғана жұмыс істейді.
Егер анықтау кезінде айнымалыларға бастапқы мән анық берілмесе,
онда компилятор ауқымды және статикалық
айнымалыларды нольге
теңестіреді. Автоматты айнымалылар инициалданбайды.
Айнымалы аты өзінің іс-әрекет аймағында айырықша болуы тиіс.
Айнымалыларды сипаттау жариялау ретінде немесе анықтама ретінде
орындалуы мүмкін. Айнымалыны жариялағанда жады түрі және айнымалы
типі туралы ақпарат болады, ал анықтамада
осы ақпаратпен қатар жадыны
бөлуге нұсқау береді. Жоғарыдағы мысалда, extern int x; - жариялау, ал
қалғаны - анықтама.