Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Сырты айнымалылар

.doc
Скачиваний:
12
Добавлен:
17.02.2016
Размер:
30.21 Кб
Скачать

Сыртқы айнымалылар.

Функцияның сыртында сипатталатын айнымалылар сыртқы болып табы-лады. Олар функция ішінде қайта қолданылатын бол-са, extern түйінді сөзі арқылы сол айнымалы қайта сипатталатын болады. Олардың әсер ету аймағы гло-бальді болып саналады.

Мысалы:

int t;

main()

{extern int t;

scanf(“%d”,&t);

while(t!=50)

pr();

printf(“Поиск завершен\n”);

}

pr()

{extern int t;

printf(“ввод следующего числа\n”);

scanf(“%d”,&t);

}

Егер pr()функциясында t айнымалысының сипат-талуы келтірілмесе де, t атты сыртқы айнымалы pr()функциясында келісім бойынша белгілі болып саналады. Егер main() және pr()функцияларында extern түйінді сөзі сол функциялар ішіндегі t ай-нымалысының сипатталуында келтірілмесе, онда t атты жаңа автоматты айнымалы пайда болады. Сонымен t атты сыртқы айнымалы бұл функциялар-да белгілі болмайды. Егер pr() функциясында t айнымалысының сипатталуында extern деген сөз жазылмаса, онда main()функциясында орналасқан t айнымалысы ешқашан жаңа мән қабылдай алмайды.

Статикалық айнымалылардың қолданылу аймағы локальді болады, ал оның автоматтық айнымалылардан өзгешелігі: егер осы айнымалыны сипаттаған функция өз жұмысын аяқтаса да, статикалық айнымалылар мәні жо-йылмайды. Функцияны бір шақырғаннан оны келесі ша-қырғанға дейін компилятор статикалық айнымалының бұрынғы мәндерін есте сақтайды.

Мысалы:

#include <stdio.h>

int fun()

{ int av=1;

static int stv=1;

printf("av=%d stv=%d\n",av++,stv++);

}

main()

{ for(int k=1; k<=3; k++)

{ printf("%d-шы адым: ",k); fun(); }

getch();

}

Бұл программаның жұмыс нәтижесі:

1-адым: av=1 stv=1

2-адым: av=1 stv=2

3-адым: av=1 stv=3

Регистрлік айнымалыларды register түйінді сөзі анықтайды. Әдетте программада сипаттала-тын айнымалылар ЭЕМ жадында сақталады,ал регистрлік айнымалылар процессордағы регистр-лерде сақталады. Осындай айнымалыларды пай-даланғанда, программаның жұмысы жылдамырақ орындалуы тиіс.

Жалпы жағдайда регистрлік айнымалылар автоматтық айнымалыға ұқсас. Егер регистрлік айнымалы программада сипатталса, осы сәтте бір регистр бос болса, онда компилятор керекті мәнді осы регистрде сақтайды деп саналады. Ал егер келтірілген талапты орындауға мүмкіндік болмаса, онда регистрлік айнымалы автоматтық айнымалы ретінде пайдаланылады.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]