Statisch in C-programmering

Static C Programming



In deze tutorial zullen we het statische trefwoord uitleggen door het toe te passen in variabelen en functies. Statisch is een sleutelwoord dat wordt gebruikt in C-programmering en kan worden toegepast met behulp van de volgende syntaxis:

statisch {gegevenstype} {variabelenaam}







Statische lokale variabelen

Wanneer een variabele in een functie statisch is, behoudt de variabele zijn waarde tussen functieaanroepen.



//Voorbeeld1.c

#erbij betrekken

intleuk1()
{

intGraaf=0;
Graaf++;
opbrengstGraaf;
}

intleuk2()
{
statisch intGraaf=0;
Graaf++;
opbrengstGraaf;
}

inthoofd()
{
printf ('fun1 1e oproep retourneert: %dN',leuk1());
printf ('fun1 2e oproep retourneert: %dNN',leuk1());

printf ('fun2 1e oproep retourneert: %dN',leuk2());
printf ('fun2 2e oproep retourneert: %dN',leuk2());

opbrengst 0;
}


In Voorbeeld 1.c hebben we twee functies: leuk1() en leuk2() . In leuk1() , declareren we één variabele (count) en initialiseren deze op 0. Vervolgens verhogen we de count-variabele en retourneren de resulterende waarde. Gebruik makend van hoofd() , wij bellen leuk1() twee keer, en elke keer wordt een waarde van 1 geretourneerd omdat de variabele count wordt gewist wanneer de aanroep naar leuk1() is voltooid. In leuk2() we hebben de variabele count als een statische variabele gedeclareerd. Daarom blijft de waarde behouden. Gebruik makend van hoofd() , wij bellen leuk2() tweemaal: de eerste keer wordt een waarde van 1 geretourneerd en de tweede keer wordt een waarde van 2 geretourneerd.



Statische globale variabelen

Een statische globale variabele gedraagt ​​zich op dezelfde manier als andere globale variabelen, maar is niet toegankelijk vanuit een ander C-programma.





Statische functies

In C zijn functies standaard globaal. Als we echter een statische functie declareren, is de functie lokaal en kan deze niet worden geopend vanuit een ander C-programma.

Initialisatie van statische variabelen

Als een statische variabele niet expliciet is geïnitialiseerd, wordt deze geïnitialiseerd als 0.



//Voorbeeld2.c

#erbij betrekken

inthoofd()
{
statisch intl;

printf ('Waarde van i : %dN',l);

opbrengst 0;
}


In Voorbeeld2.c hebben we een statische variabele i gedeclareerd die niet is geïnitialiseerd. Omdat de variabele echter statisch is, wordt deze automatisch geïnitialiseerd op 0.

Het is belangrijk op te merken dat een statische variabele moet worden geïnitialiseerd door een constante letterlijke; we kunnen de retourwaarde van een functie niet gebruiken om een ​​statische variabele te initialiseren.

//Voorbeeld3.c

#erbij betrekken

intleuk1()
{
opbrengst 5;
}

inthoofd()
{
statisch intl=leuk1();
printf ('Waarde van i : %dN',l);
opbrengst 0;
}


In Voorbeeld3.c proberen we een statische variabele te initialiseren met behulp van de retourwaarde van leuk1() . Zoals u kunt zien, wordt er echter een fout geretourneerd wanneer de code wordt gecompileerd.

Samenvatting

De levensduur van een statische variabele en de levensduur van het programma zijn gelijk.

Als een statische variabele niet is geïnitialiseerd, krijgt deze de standaardwaarde 0.

Noch een globale statische variabele, noch een statische functie is toegankelijk vanuit een ander programma dan het programma waarin deze is gedefinieerd.