logo

Statisch in C

Statisch is een trefwoord dat wordt gebruikt in de programmeertaal C. Het kan worden gebruikt met zowel variabelen als functies, dat wil zeggen dat we ook een statische variabele en een statische functie kunnen declareren. Een gewone variabele is beperkt tot de reikwijdte waarin deze is gedefinieerd, terwijl de reikwijdte van de statische variabele zich door het hele programma uitstrekt.

volledige vorm pvr

Een statisch trefwoord kan in de volgende situaties worden gebruikt:

    Statische globale variabele
    Wanneer een globale variabele wordt gedeclareerd met een statisch trefwoord, staat deze bekend als een statische globale variabele. Het wordt bovenaan het programma aangegeven en is zichtbaar in het hele programma.Statische functie
    Wanneer een functie wordt gedeclareerd met een statisch trefwoord dat bekend staat als een statische functie. De levensduur ervan loopt gedurende het hele programma.Statische lokale variabele
    Wanneer een lokale variabele wordt gedeclareerd met een statisch trefwoord, wordt deze een statische lokale variabele genoemd. Het geheugen van een statische lokale variabele is geldig in het hele programma, maar de reikwijdte van de zichtbaarheid van een variabele is hetzelfde als die van de automatische lokale variabelen. Wanneer de functie echter de statische lokale variabele wijzigt tijdens de eerste functieaanroep, zal deze gewijzigde waarde ook beschikbaar zijn voor de volgende functieaanroep.Statische lidvariabelen
    Wanneer de lidvariabelen worden gedeclareerd met een statisch trefwoord in een klasse, staat dit bekend als statische lidvariabelen. Ze zijn toegankelijk voor alle instanties van een klasse, niet voor een specifieke instantie.Statische methode
    De lidfunctie van een klasse die is gedeclareerd met een statisch trefwoord, staat bekend als een statische methode. Het is toegankelijk voor alle instanties van een klasse, niet voor een specifieke instantie.

Laten we het begrijpen aan de hand van een voorbeeld.

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

In de bovenstaande code wordt de functie func() aangeroepen. In func() wordt de count-variabele bijgewerkt. Zodra de functie zijn uitvoering heeft voltooid, wordt het geheugen van de count-variabele verwijderd. Als we de telling niet uit het geheugen willen verwijderen, moeten we de count-variabele als statisch gebruiken. Als we de variabele als statisch declareren, wordt de variabele niet uit het geheugen verwijderd, zelfs niet wanneer de functie zijn uitvoering voltooit.

Uitvoer

 1 1 

Statische variabele

Een statische variabele is een variabele die zijn waarde behoudt tijdens de verschillende functieaanroepen.

Syntaxis

De syntaxis van een statische variabele wordt hieronder gegeven:

 static data_type variable_name; 

Laten we eens kijken naar een eenvoudig voorbeeld van een statische variabele.

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

In de bovenstaande code hebben we de count-variabele als statisch verklaard. Wanneer func() wordt aangeroepen, wordt de waarde van count bijgewerkt naar 1, en tijdens de volgende functieaanroep wordt de waarde van de countvariabele 2. Daarom kunnen we zeggen dat de waarde van de statische variabele blijft bestaan ​​binnen de functieaanroep .

Uitvoer

 1 2 

Statische functie

Omdat we weten dat niet-statische functies standaard globaal zijn, betekent dit dat de functie ook buiten het bestand toegankelijk is, maar als we de functie als statisch declareren, beperkt dit de reikwijdte van de functie. De statische functie is alleen toegankelijk binnen een bestand.

De statische functie zou er als volgt uitzien:

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

Verschillen tussen statische en globale variabele

Globale variabelen zijn de variabelen die buiten de functie worden gedeclareerd. Deze globale variabelen bestaan ​​aan het begin van het programma en de reikwijdte ervan blijft tot het einde van het programma bestaan. Het is ook buiten het programma toegankelijk.

Statische variabelen zijn beperkt tot het bronbestand waarin ze zijn gedefinieerd, dat wil zeggen dat ze niet toegankelijk zijn voor de andere bronbestanden.

Zowel de statische als de globale variabelen hebben een statische initialisatie. Hier betekent statische initialisatie dat als we geen waarde aan de variabele toekennen, standaard de waarde 0 aan de variabele wordt toegewezen.

Verschillen tussen statische lokale en statische globale variabele

Statische globale variabele

Als de variabele wordt gedeclareerd met een statisch trefwoord buiten de functie, staat deze bekend als een statische globale variabele. Het is gedurende het hele programma toegankelijk.

Statische lokale variabele

De variabele met een statisch trefwoord die binnen een functie wordt gedeclareerd, staat bekend als een statische lokale variabele. De reikwijdte van de statische lokale variabele zal hetzelfde zijn als die van de automatische lokale variabelen, maar het geheugen ervan zal tijdens de uitvoering van het programma beschikbaar zijn. Wanneer de functie de waarde van de statische lokale variabele wijzigt tijdens één functieaanroep, blijft deze hetzelfde, zelfs tijdens de volgende functieaanroep.

Eigenschappen van een statische variabele

Hieronder volgen de eigenschappen van een statische variabele:

  • Het geheugen van een statische variabele wordt toegewezen binnen een statische variabele.
  • Het geheugen is door het hele programma heen beschikbaar, maar de reikwijdte blijft hetzelfde als die van de automatische lokale variabelen. Zijn
  • waarde blijft behouden bij de verschillende functieaanroepen.
  • Als we geen waarde aan de variabele toekennen, is de standaardwaarde 0.
  • Een globale statische variabele is niet toegankelijk buiten het programma, terwijl een globale variabele wel toegankelijk is via andere bronbestanden.