Statisk i C -programmering

Static C Programming



I den här självstudien kommer vi att förklara det statiska sökordet genom att tillämpa det i variabler och funktioner. Statisk är ett nyckelord som används i C -programmering, och det kan tillämpas med följande syntax:

statisk {datatyp} {variabelnamn}







Statiska lokala variabler

När en variabel i en funktion är statisk, behåller variabeln dess värde mellan funktionsanrop.



//Exempel1.c

#omfatta

intkul1()
{

inträkna=0;
räkna++;
lämna tillbakaräkna;
}

intkul2()
{
statisk inträkna=0;
räkna++;
lämna tillbakaräkna;
}

inthuvud()
{
printf ('fun1 1: a samtalet returnerar: %d n',kul1());
printf ('fun1 2: a samtalet returnerar: %d n n',kul1());

printf ('fun2 1: a samtalet returnerar: %d n',kul2());
printf ('fun2 andra samtalet returnerar: %d n',kul2());

lämna tillbaka 0;
}


I exempel 1.c har vi två funktioner: kul1 () och kul2 () . I kul1 () , deklarerar vi en variabel (count) och initierar den till 0. Sedan ökar vi räkningsvariabeln och returnerar det resulterande värdet. Använder sig av main () , vi ringer kul1 () två gånger, och varje gång returneras värdet 1 eftersom räknarvariabeln raderas när samtalet till kul1 () är klart. I kul2 () vi deklarerade räknevariabeln som en statisk variabel. Därför bevaras dess värde. Använder sig av main () , vi ringer kul2 () två gånger: första gången returneras värdet 1, och andra gången returneras värdet 2.



Statiska globala variabler

En statisk global variabel beter sig på samma sätt som andra globala variabler, men den kan inte nås från ett annat C -program.





Statiska funktioner

I C är funktionerna globala som standard. Men om vi deklarerar en statisk funktion, är funktionen lokal och kan inte nås från ett annat C -program.

Initiering av statiska variabler

Om en statisk variabel inte uttryckligen initieras initialiseras den som 0.



//Exempel2.c

#omfatta

inthuvud()
{
statisk inti;

printf ('Värde på i: %d n',i);

lämna tillbaka 0;
}


I Exempel2.c deklarerade vi en statisk variabel i som inte initieras. Eftersom variabeln är statisk initieras den dock automatiskt till 0.

Det är viktigt att notera att en statisk variabel måste initialiseras med en konstant bokstav; vi kan inte använda en funktions returvärde för att initiera en statisk variabel.

//Exempel3.c

#omfatta

intkul1()
{
lämna tillbaka 5;
}

inthuvud()
{
statisk inti=kul1();
printf ('Värde på i: %d n',i);
lämna tillbaka 0;
}


I exempel3.c försöker vi initiera en statisk variabel med hjälp av returvärdet på kul1 () . Som du kan se returneras dock ett fel när koden kompileras.

Sammanfattning

Livslängden för en statisk variabel och programmets livslängd är lika.

Om en statisk variabel inte initieras, tar den ett standardvärde på 0.

Varken en global statisk variabel eller en statisk funktion är tillgänglig från ett annat program än det där det definierades.