logo

Statisk i C

Static är ett nyckelord som används i programmeringsspråket C. Det kan användas med både variabler och funktioner, det vill säga vi kan deklarera en statisk variabel och statisk funktion också. En vanlig variabel är begränsad till omfattningen där den är definierad, medan omfattningen av den statiska variabeln är genomgående i programmet.

iPhone emojis på Android

Statiskt nyckelord kan användas i följande situationer:

    Statisk global variabel
    När en global variabel deklareras med ett statiskt nyckelord, är det känt som en statisk global variabel. Den deklareras överst i programmet, och dess synlighet är genom hela programmet.Statisk funktion
    När en funktion deklareras med ett statiskt nyckelord som kallas en statisk funktion. Dess livslängd är under hela programmet.Statisk lokal variabel
    När en lokal variabel deklareras med ett statiskt nyckelord, är det känt som en statisk lokal variabel. Minnet för en statisk lokal variabel är giltig i hela programmet, men omfattningen av synlighet för en variabel är densamma som de automatiska lokala variablerna. Men när funktionen modifierar den statiska lokala variabeln under det första funktionsanropet, kommer detta modifierade värde att vara tillgängligt för nästa funktionsanrop också.Statiska medlemsvariabler
    När medlemsvariablerna deklareras med ett statiskt nyckelord i en klass, kallas det statiska medlemsvariabler. De kan nås av alla instanser av en klass, inte med en specifik instans.Statisk metod
    Medlemsfunktionen för en klass som deklareras med ett statiskt nyckelord är känd som en statisk metod. Den är tillgänglig för alla instanser av en klass, inte med en specifik instans.

Låt oss förstå genom ett exempel.

 #include int main() { printf('%d',func()); printf('
%d',func()); return 0; } int func() { int count=0; // variable initialization count++; // incrementing counter variable return count; } 

I ovanstående kod anropas func()-funktionen. I func() uppdateras count-variabeln. Så snart funktionen slutfört sin exekvering kommer minnet för räknevariabeln att tas bort. Om vi ​​inte vill ta bort räkningen från minnet, måste vi använda räknevariabeln som statisk. Om vi ​​deklarerar variabeln som statisk, kommer variabeln inte att tas bort från minnet även när funktionen slutfört sin exekvering.

Produktion

 1 1 

Statisk variabel

En statisk variabel är en variabel som behåller sitt värde över de olika funktionsanropen.

Syntax

Syntaxen för en statisk variabel ges nedan:

 static data_type variable_name; 

Låt oss titta på ett enkelt exempel på statisk variabel.

 #include int main() { printf('%d',func()); printf('
%d',func()); return 0; } int func() { static int count=0; count++; return count; } 

I koden ovan har vi deklarerat räknevariabeln som statisk. När func() anropas uppdateras värdet på count till 1, och under nästa funktionsanrop blir värdet på countvariabeln 2. Därför kan vi säga att värdet på den statiska variabeln kvarstår i funktionsanropet .

Produktion

 1 2 

Statisk funktion

Eftersom vi vet att icke-statiska funktioner är globala som standard betyder det att funktionen kan nås utanför filen också, men om vi deklarerar funktionen som statisk, så begränsar det funktionsomfånget. Den statiska funktionen kan endast nås i en fil.

Den statiska funktionen skulle se ut så här:

 static void func() { printf('Hello javaTpoint'); } 

Skillnader sv/v statisk och global variabel

Globala variabler är de variabler som deklareras utanför funktionen. Dessa globala variabler finns i början av programmet och dess omfattning kvarstår till slutet av programmet. Den kan också nås utanför programmet.

Statiska variabler är begränsade till källfilen där de är definierade, det vill säga de är inte tillgängliga för de andra källfilerna.

Både de statiska och globala variablerna har statisk initiering. Här betyder statisk initiering att om vi inte tilldelar något värde till variabeln så kommer 0 värde att tilldelas variabeln som standard.

Skillnader sv/v statisk lokal och statisk global variabel

Statisk global variabel

Om variabeln deklareras med ett statiskt nyckelord utanför funktionen, är det känt som en statisk global variabel. Den är tillgänglig genom hela programmet.

Statisk lokal variabel

Variabeln med ett statiskt nyckelord deklareras inuti en funktion kallas en statisk lokal variabel. Omfattningen av den statiska lokala variabeln kommer att vara densamma som de automatiska lokala variablerna, men dess minne kommer att vara tillgängligt under hela programmets körning. När funktionen ändrar värdet på den statiska lokala variabeln under ett funktionsanrop, kommer den att förbli densamma även under nästa funktionsanrop.

Egenskaper för en statisk variabel

Följande är egenskaperna hos en statisk variabel:

  • Minnet för en statisk variabel allokeras inom en statisk variabel.
  • Dess minne är tillgängligt i hela programmet, men omfattningen kommer att förbli densamma som de automatiska lokala variablerna. Dess
  • värdet kvarstår över de olika funktionsanropen.
  • Om vi ​​inte tilldelar något värde till variabeln kommer standardvärdet att vara 0.
  • En global statisk variabel kan inte nås utanför programmet, medan en global variabel kan nås av andra källfiler.