type qualifiers storage classes c
Значај квалификатора типова и класа складиштења у Ц ++.
У ово Ексклузивна Ц ++ серија обуке , даље ћемо проширити тему променљивих и видети квалификаторе типова и класе складишта у Ц ++ у овом упутству. Иако је ово мала тема, она је веома важна и значајна што се тиче програмирања на Ц ++.
Квалификатори типа у Ц ++-у не мењају значење променљивих или ентитета са којима се користе, већ само додају додатне информације ентитету.
Шта ћете научити:
Укуцајте квалификације у Ц ++
Квалификатори типова у Ц ++-у додају додатна својства променљивој попут променљиве која је константа или променљива.
Квалификатори типа изражавају начин на који се приступа променљивој или где се променљива чува у меморији задржавајући значење или интерпретацију променљиве. На неки начин, квалификатори типа додају више прецизирања променљивим.
У Ц ++, квалификатор типа је наведен непосредно пре спецификатора типа (тип података) променљиве.
Квалификатори типа у Ц ++ класификовани су као што је приказано доле:
# 1) цонст
Спецификатор типа „цонст“ је да дефинише објекте типа цонст. Цонст објекат или променљива не могу се изменити након декларације. Ако се покуша модификовати цонст објекат или променљива, компајлер покреће грешку. О константама / литералу смо већ видели у нашем претходном водичу.
Дефиниција константи помоћу кључне речи „цонст“ одговара квалификатору типа „цонст“.
# 2) испарљив
Квалификатор типа „волатиле“ значи да се вредност променљиве означене волатиле може променити на друге начине који нису наведени у програму. Променљиве променљиве се обично мењају због неких спољних фактора, а не нужно због програма. Другим речима, они су нестабилне природе.
На пример, променљиву која очитава температуру у стварној речи може учинити променљивом, јер програм можда неће у потпуности контролисати температуру очитавања.
# 3) променљив
„Променљиви“ тип квалификатора чини чланове или променљиве променљивим.
Променљиви квалификатор се обично примењује на нестатичне чланове класе који нису цонст и нон-референце типа. Према одређеним ситуацијама, можда ће нам требати неке променљиве да остану непроменљиве (не могу се променити), а неке променљиве да буду променљиве. Ова врста квалификатора је од велике помоћи када желимо променљиве карактеристике.
Класе складиштења у Ц ++
До сада смо детаљно разговарали о свим променљивим Ц ++. Видели смо да се променљиве декларишу са одговарајућим типовима података и затим користе у програму. Да бисмо у потпуности дефинисали променљиву, такође су нам потребне класе складишта, осим њихових типова података.
Иако до сада нисмо навели ниједну класу меморије за променљиве, постојала је подразумевана класа меморије „ауто“ која је примењена на све променљиве.
Дакле, шта су класе за складиштење?
Класе меморије одређују како преводитељ треба да третира променљиву или функцију и како меморију треба доделити променљивој. Дефинише видљивост или опсег и животни век променљиве. Животни век променљиве је колико дуго ће променљива остати активна.
Видљивост или опсег променљиве је којим функцијама или модулима ће променљива бити доступна. Ове класе меморије су специфициране пре типа података променљиве.
У Ц ++-у имамо следеће класе складишта:
# 1) Класа аутоматског складиштења
Ово је подразумевана класа складишта. Класа меморије „Ауто“ примењује се на локалне променљиве и преводилац је аутоматски додељује локалним променљивим. Локалне променљиве којима претходи кључна реч ‘ауто’ остају активне у функцији у којој су декларисане и излазе из опсега након што функција изађе.
Ако променљиве које имају класу складиштења „ауто“ нису иницијализоване или им није додељена било која вредност, онда имају смеће или недефинисане вредности.
како отворити епс датотеку
Погледајмо пример аутоматских променљивих у програму Ц ++.
#include using namespace std; int main() { int i; float f; cout<<'Variable i = '< # 2) Региструјте класу складишта Када имамо захтев да променљивој треба бржи приступ, тада користимо класу складишта регистра. Дакле, уместо да чувају променљиве у меморији случајног приступа (РАМ), ове променљиве се чувају у регистру ЦПУ-а и имају величину једнаку величини регистра.
Поред тога, с обзиром да ове променљиве немају меморијску локацију, не можемо користити оператор „&“ са овим променљивим.
Поседовање променљиве са класом складишта Регистра не гарантује да ће променљива увек бити ускладиштена у регистру. Уместо тога, само претпоставља да променљива може бити ускладиштена у регистру и да у потпуности зависи од хардвера и имплементације.
Регистарске променљиве имају опсег и животни век сличне аутоматским променљивим.
На пример,
#include using namespace std; int main() { int i; register float f; cout<<'Variable i = '< # 3) Класа екстерног складишта Класа екстерног складишта је потребна када променљиве треба делити у више датотека. Екстерне променљиве имају глобални опсег и оне су видљиве изван датотеке у којој су декларисане.
Како су екстерне променљиве променљиве декларисане и дефинисане споља у другој датотеци, оне се не иницијализују.
Екстерне променљиве имају глобални опсег, а животни век екстерних променљивих је онолико дуго колико је програм у којем је проглашена окончаном.
Екстерне променљиве могу се декларисати на следећи начин:
extern int temp; int temp;
У горњем примеру имамо две декларације променљивих са истим именом, али прва је спољна променљива дефинисана на другом месту. Ова екстерна променљива биће корисна када у наш програм укључимо изворну датотеку у којој је екстерна променљива темп дефинисана.
како да отворим јсон датотеку
# 4) Класа статичког складишта
Статичка класа складишта говори компајлеру да одржи вредност променљиве током целог животног века програма. Статичке променљиве су сличне локалним променљивим, али им претходи „статичка“ кључна реч.
За разлику од локалних променљивих које излазе из опсега након изласка функције, статичке променљиве не излазе из опсега када функција или блок излазе и њихове вредности се чувају између позива функције.
Статичке променљиве се иницијализују и меморија им се додељује само једном у животу програма. Статичке променљиве су иницијализоване на 0 ако већ нису иницијализоване током декларације.
Погледајмо следећи пример да бисмо боље разумели класу статичке меморије.
#include using namespace std; void printvar() { static int var; var++; cout<<'static variable var = '< Излаз:
принтвар позив 1: статичка променљива вар = 1
принтвар позив 2: статичка променљива вар = 2
принтвар позив 3: статичка променљива вар = 3
принтвар позив 4: статичка променљива вар = 4
У горњем коду имамо функцију ‘принтвар’ у којој смо прогласили статичку променљиву вар типа инт. Затим повећавамо ову променљиву и исписујемо је. У главној функцији, функцију принтвар позивамо четири пута.
Сада проверите излаз. Излаз показује да се са сваким позивом функције статичка променљива вар увећава за 1 у односу на своју претходну вредност. Ово је класа статичке меморије која помаже променљивој да одржи вредност између позива функције. Статичка променљива се не иницијализује за сваки позив функције.
Такође треба приметити да смо у функцији принтвар управо прогласили статичку променљиву и нисмо је иницијализовали. Приметно је да када статичке променљиве не иницијализујемо, додељују им се почетна вредност 0.
Белешка: Класа статичког складишта такође се може применити на глобалне променљиве. У овом случају, променљива ће имати глобални опсег и додатно статичко складиште.
# 5) Променљива класа складишта
Измењива класа меморије примењује се само на објекте класе. Применом променљиве класе меморије, члан објекта може надјачати функцију члана ‘цонст’. То значи да променљиви члан или објекат може да модификује функција члана која је „цонст“.
Сазнаћемо више о цонст функцијама и објектима, као и променљивим члановима у нашим каснијим водичима када научимо о објектно оријентисаном програмирању на Ц ++.
Закључак
Овде се ради о спецификаторима типова и класама складиштења у Ц ++. Надамо се да смо кроз овај водич успели да појаснимо све концепте класа складиштења и спецификатора типова.
У нашем предстојећем упутству сазнаћемо више о разним операторима који се користе у Ц ++-у, заједно са њиховом употребом.
=> Овде погледајте комплетну серију обука за Ц ++
Препоручено читање
- Променљиве у Ц ++
- Питхон променљиве
- Јава интерфејс и лекција са апстрактним часовима са примерима
- Претворбе типа у Ц ++
- ВБСцрипт променљиве: Како пријавити и користити променљиве - ВБСцрипт Дим
- ЈМетер променљиве и функције
- 10 НАЈБОЉИХ добављача бесплатног Цлоуд Стораге (Интернет Стораге 2021)
- Врсте тестирања миграције: Са сценаријима испитивања за сваки тип