Ц Класа складиштења

У овом упутству ћете научити о опсегу и животном вијеку локалних и глобалних варијабли. Такође ћете научити о статичким и регистрационим променљивим.

Свака променљива у програмирању на Ц има два својства: тип и класу меморије.

Тип се односи на тип података променљиве. Класа складиштења одређује опсег, видљивост и животни век променљиве.

Постоје 4 врсте класе складишта:

  1. аутоматски
  2. спољни
  3. статички
  4. регистровати

Локална променљива

Променљиве декларисане унутар блока су аутоматске или локалне променљиве. Локалне променљиве постоје само унутар блока у којем су декларисане.

Узмимо пример.

 #include int main(void) ( for (int i = 0; i < 5; ++i) ( printf("C programming"); ) // Error: i is not declared at this point printf("%d", i); return 0; )

Када покренете горњи програм, добићете грешку непријављени идентификатор и. То је зато што сам декларисан унутар forблока петље. Изван блока је непријављен.

Узмимо још један пример.

  int main() ( int n1; // n1 is a local variable to main() ) void func() ( int n2; // n2 is a local variable to func() ) 

У горњем примеру, н1 је локални за, main()а н2 је локални за func().

То значи да не можете приступити променљивој н1 изнутра func()јер она постоји само изнутра main(). Слично томе, не можете приступити н2 променљивој изнутра main()јер она постоји само изнутра func().

Глобална променљива

Променљиве које су декларисане изван свих функција познате су као спољне или глобалне променљиве. Доступни су из било које функције унутар програма.

Пример 1: Глобална променљива

 #include void display(); int n = 5; // global variable int main() ( ++n; display(); return 0; ) void display() ( ++n; printf("n = %d", n); ) 

Оутпут

 н = 7

Претпоставимо да је глобална променљива декларисана у file1. Ако покушате да користите ту променљиву у другој датотеци file2, преводилац ће се жалити. Да би се решио овај проблем, кључна реч externсе користи file2за означавање да је спољна променљива декларисана у другој датотеци.

Региструј променљиву

Кључна registerреч се користи за декларисање променљивих регистра. Регистарске променљиве су требале бити брже од локалних променљивих.

Међутим, модерни компајлери су врло добри у оптимизацији кода, а ретка је шанса да ће употреба променљивих регистра убрзати ваш програм.

Ако не радите на уграђеним системима у којима знате како да оптимизујете код за дату апликацију, нема користи од променљивих регистра.

Статичка променљива

Статичка променљива се декларише помоћу staticкључне речи. На пример;

 статички инт и;

Вредност статичке променљиве задржава се до краја програма.

Пример 2: Статичка променљива

 #include void display(); int main() ( display(); display(); ) void display() ( static int c = 1; c += 5; printf("%d ",c); ) 

Оутпут

 6 11

Током првог позива функције, вредност ц се иницијализује на 1. Његова вредност се увећава за 5. Сада је вредност ц 6, која се штампа на екрану.

Током другог позива функције, ц се поново не иницијализује на 1. То је зато што је ц статичка променљива. Вредност ц се повећава за 5. Сада ће њена вредност бити 11, што је одштампано на екрану.

Занимљиви Чланци...