C Lagringsklass

I den här självstudien lär du dig om omfattning och livstid för lokala och globala variabler. Du lär dig också om statiska variabler och registervariabler.

Varje variabel i C-programmering har två egenskaper: typ och lagringsklass.

Typ avser datatypen för en variabel. Och lagringsklassen bestämmer omfattningen, synligheten och livslängden för en variabel.

Det finns fyra typer av lagringsklass:

  1. automatisk
  2. extern
  3. statisk
  4. Registrera

Lokal variabel

Variablerna som deklareras i ett block är automatiska eller lokala variabler. De lokala variablerna finns bara inuti det block där de deklareras.

Låt oss ta ett exempel.

 #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; )

När du kör programmet ovan får du ett fel som inte har deklarerat i. Det beror på att jag förklaras inne i forloopblocket. Utanför blocket är det svart.

Låt oss ta ett annat exempel.

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

I exemplet ovan är n1 lokal för main()och n2 är lokal för func().

Det betyder att du inte kan komma åt n1-variabeln inuti func()eftersom den bara finns inuti main(). På samma sätt kan du inte komma åt n2-variabeln inuti main()eftersom den bara finns inuti func().

Global variabel

Variabler som deklareras utanför alla funktioner kallas externa eller globala variabler. De är tillgängliga från alla funktioner i programmet.

Exempel 1: Global variabel

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

Produktion

 n = 7

Antag att en global variabel deklareras i file1. Om du försöker använda variabeln i en annan fil file2kommer kompilatorn att klaga. För att lösa detta problem används nyckelordet externför file2att indikera att den externa variabeln deklareras i en annan fil.

Registrera variabel

Det registernyckelordet används för att deklarera registervariabler. Registreringsvariabler skulle vara snabbare än lokala variabler.

Moderna kompilatorer är dock mycket bra på kodoptimering, och det finns en sällsynt chans att användningen av registervariabler gör ditt program snabbare.

Såvida du inte arbetar med inbäddade system där du vet hur du optimerar koden för den givna applikationen, finns det ingen användning av registervariabler.

Statisk variabel

En statisk variabel deklareras med hjälp av staticnyckelordet. Till exempel;

 statisk int i;

Värdet på en statisk variabel kvarstår till slutet av programmet.

Exempel 2: Statisk variabel

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

Produktion

 6 11

Under det första funktionsanropet initialiseras värdet på c till 1. Dess värde ökas med 5. Nu är värdet på c 6, som skrivs ut på skärmen.

Under det andra funktionsanropet initialiseras inte c till 1 igen. Det beror på att c är en statisk variabel. Värdet c ökas med 5. Nu blir dess värde 11, vilket skrivs ut på skärmen.

Intressanta artiklar...