Увод у класе складиштења Ц

Свака вредност или број треба да се сачува на неком месту за касније коришћење, зар не? То се може учинити коришћењем променљивих у Ц. Варијабле су подручја складиштења која се користе у нашим програмима. Свака варијабла ће бити одређеног типа попут целог броја, знакова и такође ће имати одређену величину и изглед овисно о њиховој врсти. Свака врста променљиве требало би да се чува у одређеном делу меморије и имаће ограничено или специфично одобрење приступа. Класе складиштења у Ц одређује у ком делу меморије треба чувати сваку променљиву и такође одређује опсег (видљивост) променљиве. Постоје четири врсте класа складиштења - ауто, екстерн, статички и регистар. Уз спецификацију се може споменути и један спецификатор за похрану.

Врсте класа складиштења на Ц

Врсте класа складиштења на Ц су следеће

1. Класа аутоматског складиштења

Све променљиве декларисане у оквиру функције или блока биће задано сачуване у аутоматском спецификатору, чак и ако нису изричито дефинисане. Спецификатор ове класе складиштења је „ауто“. Обим или видљивост променљивих у класи аутоматског складиштења је локална блоку или функцији коју је дефинисала. Променљива ће бити уништена када изађемо из функције или блока.

То се може боље објаснити примером. Размотрите пример дат у наставку:

Шифра:

int main() (
int i = 2;
( int i = 4;
printf(“%d\n”, i);
)
printf(“%d\n”, i);
)

Излаз:

4

2

Овде се променљива И целог броја типа декларише прво са додељеном вредношћу 2. Затим се унутар петље или блока поново варијабла И истог целог броја декларише са додељеном вредношћу 4. Ако се не спомиње спецификатор складиштења, он ће се подразумевано узимати као аутоматски. У првој наредби принтф која се спомиње унутар блока исписат ће се 4 на штампању вриједности И. Док ће у другој принтф изјави која се спомиње изван блока исписати вриједност И као 2, вриједност која је споменута изван блок. Боље је иницирати неку вредност од ауто променљивих јер постоје шансе да се понекад добије било каква вредност смећа ако се не изврши иницијализација. Овај пример даје јасну слику ауто променљивих и о локалном обиму.

2. Региструјте класу складиштења

Промјењиве вриједности похрањене у класи похране у регистру такођер ће имати локални опсег, што значи да је доступна или видљива само у блоку у којем је декларирана. Ова меморија је слична аутоматској, али главна разлика је у томе што су аутоматске променљиве смештене у меморији док су променљиве регистра сачуване у ЦПУ регистрима. То се ради ако желимо да често променимо варијаблу. Они се могу брже користити. Само неколико променљивих се чува користећи спецификацију регистра. Ако у регистру нема места, он се чува само у меморији. Ниједној почетној вредности није додељена регистарска варијабла. Такође, & (аддресс-оф) оператор се не може користити за регистар променљивих. На пример, променљиве које се користе за бројаче или сличне типове коришћења чувају се користећи спецификатор регистра.

3. Класа статичког складиштења

Варијабла, може ли бити глобална или локална, похрањује се користећи статички спецификатор у класи статичке меморије када варијаблу треба једном прогласити и вриједност треба задржати. Када се варијабла декларира као статична, вриједност ће бити сачувана или задржана између позива функције. Ствара се трајна меморија и декларише се само једном. Кад је локална варијабла декларирана као статична, за њу се ствара трајна меморија и вриједност се задржава сваки пут када се користи. Такође према опсегу уобичајене локалне променљиве, статичке локалне променљиве су такође видљиве само функцији или блоку где је дефинисана. Када је глобална променљива декларирана као статична, слично је статичкој локалној, ствара се трајна меморија и декларише се само једном. Иако су глобалне, ове променљиве су видљиве само у датотеци у којој је дефинисана.

Статичке променљиве могу се јасно приказати следећим примером:

Шифра:

int samplefunc() (
static int a = 0;
a = a+2;
return a;
)
int main() (
int result1 = samplefunc();
int result2 = samplefunc();
printf("%d\n", result1);
printf("%d\n", result2);
)

Излаз:

2

4

Овде, у горњем програму, када се позива самплефунц (), променљива а се дефинише и иницијализује први пут и за њу се ствара трајна меморија. Математичким изразом који се користи у функцији вредност а затим постаје 2. Али када се исти узорак функције () зове други пут, променљива а није дефинисана или се поново иницијализира, већ узима задњу задржану вредност и наставља са операцијом што даје коначни резултат као 4. Ово је главна употреба и предност статичких променљивих.

4. Класа складиштења у иностранству

Променљива декларисана као спољна, приказује да је променљива дефинисана другде у другом програму. Ове спољне варијабле се користе када желимо да се било која варијабла или функција дефинирана у једном програму користи и у другој датотеци. Променљиве варијабле са екстерним спецификатором се чувају у класи спољног складиштења. Када се варијабла декларише као екстерна програм, она одређује спољашњу везу и стога је поново не дефинише или иницијализира. Складиштење је додељено само једно и такође се иницијализира само једном. Ако се вањске варијабле поново иницијализирају с другом вриједношћу у вањском програму, добићемо грешку у којој је наведено „Редефиниција варијабле“.

Вањске варијабле се објашњавају коришћењем следећег примера:

Шифра:

Прг1.ц

int count;
int main() (
count = 10;
)

Прг2.ц

extern int count;
int main() (
printf(“%d”, count);
)

Излаз:

10

Овде се број целине променљивих декларише у првом програму Ц (Прг1.ц), а унутар главне функције се иницијализира у вредност 10. У другом програму Ц иста варијабла броја декларише се помоћу екстерног спецификатора, који одређује да постоји вањска веза и вриједност се преузима из складишта, а вриједност 10 даје се преброју вриједности када је исписујемо у другом програму. Ово је употреба спољних променљивих. Дакле, овисно о различитој намјени, свака класа складиштења се користи за одговарајуће варијабле и декларира се одговарајућим спецификаторима.

Препоручени чланци

Ово је водич за Ц класе складиштења. Овдје смо расправљали о врстама класа складиштења које укључују класу аутоматског складиштења, класу складиштења у регистру, класу статичког складиштења и вањску класу складиштења. Такође можете погледати следеће чланке да бисте сазнали више -

  1. Шта је ЈаваБеанс?
  2. ЕС6 вс ЕС5
  3. Ц ++ вс Висуал Ц ++
  4. Перформансе Ц у односу на Ц и више+

Категорија: