C Opslagklasse

In deze zelfstudie leert u over de omvang en levensduur van lokale en globale variabelen. Ook leert u over statische en registervariabelen.

Elke variabele in C-programmering heeft twee eigenschappen: type en opslagklasse.

Type verwijst naar het gegevenstype van een variabele. En de opslagklasse bepaalt de omvang, zichtbaarheid en levensduur van een variabele.

Er zijn 4 soorten opslagklassen:

  1. automatisch
  2. extern
  3. statisch
  4. registreren

Lokale variabele

De variabelen die binnen een blok worden gedeclareerd, zijn automatische of lokale variabelen. De lokale variabelen bestaan ​​alleen binnen het blok waarin ze zijn gedeclareerd.

Laten we een voorbeeld nemen.

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

Wanneer u het bovenstaande programma uitvoert, krijgt u een foutmelding met niet-gedeclareerde ID i. Het is omdat ik wordt gedeclareerd in het forlusblok. Buiten het blok is het niet aangegeven.

Laten we een ander voorbeeld nemen.

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

In het bovenstaande voorbeeld is n1 lokaal voor main()en is n2 lokaal voor func().

Dit betekent dat je geen toegang hebt tot de n1 variabele binnenin func()omdat deze alleen binnenin bestaat main(). Evenzo hebt u geen toegang tot de n2-variabele binnenin, main()omdat deze alleen binnenin bestaat func().

Globale variabele

Variabelen die buiten alle functies worden gedeclareerd, worden externe of globale variabelen genoemd. Ze zijn toegankelijk vanuit elke functie binnen het programma.

Voorbeeld 1: Globale variabele

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

Uitvoer

 n = 7

Stel dat een globale variabele wordt gedeclareerd in file1. Als je die variabele in een ander bestand probeert te gebruiken file2, zal de compiler klagen. Om dit probleem op te lossen, wordt een trefwoord externgebruikt file2om aan te geven dat de externe variabele in een ander bestand is gedeclareerd.

Registreer variabele

Het registersleutelwoord wordt gebruikt om registervariabelen te declareren. Registervariabelen zouden sneller zijn dan lokale variabelen.

Moderne compilers zijn echter erg goed in code-optimalisatie, en er is een zeldzame kans dat het gebruik van registervariabelen uw programma sneller zal maken.

Tenzij u werkt aan embedded systemen waarvan u weet hoe u code kunt optimaliseren voor de gegeven toepassing, is er geen gebruik van registervariabelen.

Statische variabele

Een statische variabele wordt gedeclareerd door het staticsleutelwoord te gebruiken. Bijvoorbeeld;

 statische int i;

De waarde van een statische variabele blijft bestaan ​​tot het einde van het programma.

Voorbeeld 2: statische variabele

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

Uitvoer

 6 11

Tijdens de eerste functieaanroep wordt de waarde van c geïnitialiseerd naar 1. De waarde wordt verhoogd met 5. Nu is de waarde van c 6, die op het scherm wordt afgedrukt.

Tijdens de tweede functieaanroep wordt c niet opnieuw op 1 geïnitialiseerd. Het is omdat c een statische variabele is. De waarde c wordt verhoogd met 5. Nu is de waarde 11, die op het scherm wordt afgedrukt.

Interessante artikelen...