Statisk i C -programmering

Statisk i C -programmering
I denne opplæringen vil vi forklare det statiske nøkkelordet ved å bruke det i variabler og funksjoner. Statisk er et nøkkelord som brukes i C -programmering, og det kan brukes ved å bruke følgende syntaks:

statisk datatype variabelnavn

Statiske lokale variabler

Når en variabel i en funksjon er statisk, bevarer variabelen verdien mellom funksjonsanrop.

// Eksempel1.c
#inkludere
int Fun1 ()

int count = 0;
telle ++;
returantall;

int Fun2 ()

statisk int count = 0;
telle ++;
returantall;

int main ()

printf ("Fun1 1. samtale returnerer: %d \ n", Fun1 ());
printf ("Fun1 2. samtale returnerer: %d \ n \ n", Fun1 ());
printf ("Fun2 1. samtale returnerer: %d \ n", Fun2 ());
printf ("Fun2 2. samtale returnerer: %d \ n", Fun2 ());
retur 0;


I eksempel 1.C, vi har to funksjoner: Fun1 () og Fun2 (). I Fun1 (), Vi erklærer en variabel (telling) og initialiserer den til 0. Deretter øker vi tellevariabelen og returnerer den resulterende verdien. Ved hjelp av hoved(), vi ringer Fun1 () to ganger, og hver gang returneres en verdi på 1 fordi tellevariabelen blir fjernet når samtalen til Fun1 () det er ferdig. I Fun2 () Vi erklærte tellevariabelen som en statisk variabel. Derfor er verdien bevart. Ved hjelp av hoved(), vi ringer Fun2 () To ganger: Første gang returneres en verdi på 1, og andre gang returneres en verdi på 2.

Statiske globale variabler

En statisk global variabel oppfører seg på samme måte som andre globale variabler, men den kan ikke nås fra et annet C -program.

Statiske funksjoner

I C er funksjoner globale som standard. Imidlertid, hvis vi erklærer en statisk funksjon, er funksjonen lokal og kan ikke nås fra et annet C -program.

Initialisering av statiske variabler

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

// Eksempel2.c
#inkludere
int main ()

statisk int i;
printf ("Verdi på i: %d \ n", i);
retur 0;


I eksempel2.C, vi erklærte en statisk variabel I som ikke er initialisert. Fordi variabelen er statisk, blir den imidlertid automatisk initialisert til 0.

Det er viktig å merke seg at en statisk variabel må initialiseres med en konstant bokstavelig; Vi kan ikke bruke en funksjons returverdi for å initialisere en statisk variabel.

// Eksempel3.c
#inkludere
int Fun1 ()

retur 5;

int main ()

statisk int i = Fun1 ();
printf ("Verdi på i: %d \ n", i);
retur 0;


I eksempel3.C, vi prøver å initialisere en statisk variabel ved å bruke returverdien av Fun1 (). Som du ser, returneres imidlertid en feil når koden er samlet.

Sammendrag

Levetiden til en statisk variabel og programmets levetid er lik.

Hvis en statisk variabel ikke blir initialisert, vil den ta en standardverdi på 0.

Verken en global statisk variabel eller en statisk funksjon er tilgjengelig fra et annet program enn den der det ble definert.