С++ те бағдарламалау пәнінен дәрістер


Жады кластары және программаларды ұйымдастыру



бет48/79
Дата07.02.2022
өлшемі380,73 Kb.
#94133
түріПрограмма
1   ...   44   45   46   47   48   49   50   51   ...   79
Байланысты:
Дәріс сабақтары С каз

Жады кластары және программаларды ұйымдастыру
Объектілердің локализациялануы. Автоматы жадыны сипаттау үшін auto немесе register жадыларының классспецификаторлары қолданыла береді. Бірақта бұл жады класының спецификаторлардың-кілттік сөздерінсіз-ақ блок ішінде анықталған(мысалы,функция денесінің ішінде) кез-келген объект (мысалы,массивтер немесе айнымалылар), автоматты жады объектісі ретінде қабылданады. Автоматты жады объектісі өзі анықталған блоктың ішінде ғана бар болады. Аuto немесе register типіндегі объектілерімен белгіленген жады блоктан шыға бергенде босатылады, яғни объектілер жоғалады. Блокқа қайта кіргенде сол объектілер үшін жадыдан алдыңғылардан тәуелдсіз жаңа аймақтар бөлінеді. Автоматты жады объектілері өздері анықталған блоктың ішінде локалданған, олардың бар болу уақыты("өмір сүру" уақыты) сол блоктың ішіндегі басқарудың бар болуымен анықталады. Басқаша айтқанда, автоматты жады әрқашанда ішкі болады, оған тек сол блокта, яғни өзі анықталған блокта болғанда ғана байланыса аласыз.
Мысал:
# include
/* Автоматты жады айнымалылары */
void autofunc(void)
{
int K=l;
printf("\tK=%d",K);
K++;
return;
}
void main()
{
int x;
for (i=0;i<5;i++)
autofunc();
}
Программаның орындалуының нәтижелері: K=1 K=1 K=1 K=1 K=1
Бұл программаның орындалуының нәтижесі айқын көрініп тұр, және келтірмей-ақ қоюға болатын еді егер ішкі жадының тағы бір классы – статистикалық ішкі жады болмаса. Келтірілген программаға өте ұқсас программаны қарастырайық:
#include
/* Статистикалық жадының локальды айнымалылары */
void stat(void)
{
static int K=l;
printf("\tK=%d",K>
K++;
return;
}
void main()
{
int i;
for (i=0;x<5;i++)
stat() ;
}
Программаның орындалуының нәтижелері:K=1 K=2 K=3 K=4 K=5
Отличие функций autofunc() и stat() состоит в наличии спецификатора static при определении переменной int К, локализованной в теле функции stat(). К айнымалысы autofunc() функциясындағы - бұл автоматты жады айнымалысы, ол функцияға әр кірген сайын анықталады және инициализацияланады. static int К айнымалысы жадыдан орын алады және бір-ақ рет қана инициализирленеді. К статистикалық ішкі айнымалысының соңғы мәні stat() функциясынан шыға берісте, дәл осы функцияның кезеті шақырылуына дейіін сақталады.


Достарыңызбен бөлісу:
1   ...   44   45   46   47   48   49   50   51   ...   79




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет