Statisk i C -programmering

Static C Programming



I denne vejledning forklarer vi det statiske søgeord ved at anvende det i variabler og funktioner. Statisk er et nøgleord, der bruges i C -programmering, og det kan anvendes ved hjælp af følgende syntaks:

statisk {datatype} {variabelnavn}







Statiske lokale variabler

Når en variabel i en funktion er statisk, bevarer variablen sin værdi mellem funktionskald.



// Eksempel1.c

#omfatte

intsjovt 1()
{

inttælle=0;
tælle++;
Vend tilbagetælle;
}

intsjovt2()
{
statisk inttælle=0;
tælle++;
Vend tilbagetælle;
}

intvigtigste()
{
printf ('fun1 1. opkald returnerer: %d n',sjovt 1());
printf ('fun1 2. opkald returnerer: %d n n',sjovt 1());

printf ('fun2 1. opkald returnerer: %d n',sjovt2());
printf ('fun2 2. opkald returnerer: %d n',sjovt2());

Vend tilbage 0;
}


I eksempel 1.c har vi to funktioner: sjov1 () og sjov2 () . I sjov1 () , vi erklærer en variabel (tæller) og initialiserer den til 0. Derefter øger vi tællingsvariablen og returnerer den resulterende værdi. Ved brug af main () , vi ringer sjov1 () to gange, og hver gang returneres en værdi på 1, fordi tællingsvariablen slettes, når opkaldet til sjov1 () er afsluttet. I sjov2 () vi erklærede tællingsvariablen som en statisk variabel. Derfor bevares dens værdi. Ved brug af main () , vi ringer sjov2 () to gange: første gang returneres en værdi på 1, og anden gang returneres en værdi på 2.



Statiske globale variabler

En statisk global variabel opfører sig på samme måde som andre globale variabler, men den kan ikke tilgås fra et andet C -program.





Statiske funktioner

I C er funktioner som standard globale. Men hvis vi erklærer en statisk funktion, så er funktionen lokal og kan ikke tilgås fra et andet C -program.

Initialisering af statiske variabler

Hvis en statisk variabel ikke eksplicit initialiseres, initialiseres den som 0.



//Eksempel2.c

#omfatte

intvigtigste()
{
statisk intjeg;

printf ('Værdi af i: %d n',jeg);

Vend tilbage 0;
}


I eksempel2.c erklærede vi en statisk variabel i, der ikke initialiseres. Men fordi variablen er statisk, initialiseres den automatisk til 0.

Det er vigtigt at bemærke, at en statisk variabel skal initialiseres med en konstant bogstavelig; vi kan ikke bruge en funktions returværdi til at initialisere en statisk variabel.

// Eksempel3.c

#omfatte

intsjovt 1()
{
Vend tilbage 5;
}

intvigtigste()
{
statisk intjeg=sjovt 1();
printf ('Værdi af i: %d n',jeg);
Vend tilbage 0;
}


I eksempel3.c forsøger vi at initialisere en statisk variabel ved hjælp af returværdien på sjov1 () . Som du kan se, returneres der imidlertid en fejl, når koden kompileres.

Resumé

Levetiden for en statisk variabel og programmets levetid er ens.

Hvis en statisk variabel ikke initialiseres, tager den en standardværdi på 0.

Hverken en global statisk variabel eller en statisk funktion er tilgængelig fra et andet program end det, hvor det blev defineret.