statisch gegevenstype variabelenaam
Statische lokale variabelen
Wanneer een variabele in een functie statisch is, behoudt de variabele zijn waarde tussen functieaanroepen.
//Voorbeeld 1.c#include
int fun1()
aantal int=0;
tellen++;
terugtelling;
int fun2()
statische int telling = 0;
tellen++;
terugtelling;
int hoofd()
printf("fun1 1e oproep geeft als resultaat: %d\n",fun1());
printf("fun1 2e oproep geeft als resultaat: %d\n\n",fun1());
printf("fun2 1e oproep geeft als resultaat: %d\n",fun2());
printf("fun2 2e oproep geeft als resultaat: %d\n",fun2());
retourneer 0;
In voorbeeld 1.c, we hebben twee functies: leuk1() en leuk2(). In leuk1(), we declareren één variabele (aantal) en initialiseren deze op 0. Vervolgens verhogen we de count-variabele en retourneren we 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 count-variabele 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#include
int hoofd()
statische int i;
printf("Waarde van i : %d\n",i);
retourneer 0;
In voorbeeld2.c, we hebben 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#include
int fun1()
retour 5;
int hoofd()
statische int i = fun1();
printf("Waarde van i : %d\n",i);
retourneer 0;
In voorbeeld3.c, we proberen een statische variabele te initialiseren met behulp van de retourwaarde van leuk1(). Zoals u echter kunt zien, wordt er 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 een standaardwaarde van 0.
Noch een globale statische variabele noch een statische functie is toegankelijk vanuit een ander programma dan het programma waarin het werd gedefinieerd.