I denne vejledning lærer du om omfanget og levetiden for lokale og globale variabler. Du vil også lære om statiske variabler og registervariabler.
Hver variabel i C-programmering har to egenskaber: type og lagerklasse.
Type henviser til datatypen for en variabel. Og lagerklassen bestemmer omfanget, synligheden og levetiden for en variabel.
Der er 4 typer opbevaringsklasser:
- automatisk
- ekstern
- statisk
- Tilmeld
Lokal variabel
Variablerne deklareret inde i en blok er automatiske eller lokale variabler. De lokale variabler findes kun inden for den blok, hvori de erklæres.
Lad os tage et eksempel.
#include int main(void) ( for (int i = 0; i < 5; ++i) ( printf("C programming"); ) // Error: i is not declared at this point printf("%d", i); return 0; )
Når du kører ovenstående program, får du en fejl, der er ikke angivet, id. Det er fordi jeg er erklæret inde i for
loopblokken. Uden for blokken er den sort.
Lad os tage et andet eksempel.
int main() ( int n1; // n1 is a local variable to main() ) void func() ( int n2; // n2 is a local variable to func() )
I ovenstående eksempel er n1 lokal for main()
og n2 er lokal for func()
.
Dette betyder, at du ikke kan få adgang til n1-variablen indeni, func()
da den kun findes indeni main()
. På samme måde kan du ikke få adgang til n2-variablen indeni, main()
da den kun findes indeni func()
.
Global variabel
Variabler, der erklæres uden for alle funktioner, er kendt som eksterne eller globale variabler. De er tilgængelige fra enhver funktion inde i programmet.
Eksempel 1: Global variabel
#include void display(); int n = 5; // global variable int main() ( ++n; display(); return 0; ) void display() ( ++n; printf("n = %d", n); )
Produktion
n = 7
Antag, at en global variabel erklæres i file1
. Hvis du prøver at bruge den variabel i en anden fil file2
, klager compileren. For at løse dette problem extern
bruges nøgleordet til file2
at angive, at den eksterne variabel erklæres i en anden fil.
Registrer variabel
Den register
søgeord bruges til at erklære registerdata variabler. Registervariabler skulle være hurtigere end lokale variabler.
Moderne compilere er dog meget gode til kodeoptimering, og der er en sjælden chance for, at brug af registervariabler gør dit program hurtigere.
Medmindre du arbejder på indlejrede systemer, hvor du ved, hvordan du optimerer koden til den givne applikation, er der ingen brug af registervariabler.
Statisk variabel
En statisk variabel erklæres ved hjælp af static
nøgleordet. For eksempel;
statisk int i;
Værdien af en statisk variabel vedvarer indtil programmets afslutning.
Eksempel 2: Statisk variabel
#include void display(); int main() ( display(); display(); ) void display() ( static int c = 1; c += 5; printf("%d ",c); )
Produktion
6 11
Under det første funktionsopkald initialiseres værdien af c til 1. Dens værdi øges med 5. Nu er værdien af c 6, som er trykt på skærmen.
Under det andet funktionsopkald initialiseres c ikke til 1 igen. Det er fordi c er en statisk variabel. Værdien c øges med 5. Nu bliver dens værdi 11, som er trykt på skærmen.