I C -programmering bestemmer lagringsklasser
omfanget ,
levetid , og
kobling av en variabel eller funksjon. De kontrollerer hvordan kompilatoren administrerer minnet som er tildelt disse elementene. La oss bryte ned hver lagringsklasse:
1. Automatisk (auto):
* Scope: Lokal til blokken den er erklært.
* Lifetime: Eksisterer bare under utførelsen av blokken der den er erklært.
* Linkage: Ingen kobling (ikke tilgjengelig utenfra funksjonen).
* eksempel:
`` c
int main () {
int x =10; // 'X' er en automatisk variabel
// ...
}
`` `
2. Ekstern (ekstern):
* Scope: Globalt omfang.
* Lifetime: Eksisterer gjennom hele programmets utførelse.
* Linkage: Ekstern kobling (tilgjengelig fra andre filer).
* eksempel:
`` c
// i fil1.c
Eksternt int y; // erklærer 'y' som ekstern
// i fil2.c
int y =20; // definerer 'y'
`` `
3. Statisk:
* Scope: Lokal til blokken der den er erklært.
* Lifetime: Eksisterer for hele programmets utførelse.
* Linkage: Intern kobling (bare tilgjengelig i gjeldende fil).
* eksempel:
`` c
void myFunc () {
statisk int count =0; // 'Count' beholder verdien mellom funksjonssamtaler
telle ++;
printf ("count:%d \ n", count);
}
`` `
4. Register:
* Scope: Lokal til blokken der den er erklært.
* Lifetime: Eksisterer bare under utførelsen av blokken der den er erklært.
* Linkage: Ingen kobling (ikke tilgjengelig utenfra funksjonen).
* eksempel:
`` c
void myFunc () {
Registrer int i; // Forespørsel om kompilatoren om å lagre 'I' i et register
for (i =0; i <10; i ++) {
// ...
}
}
`` `
Nøkkelpunkter:
* Scope: Bestemmer hvor i programmet en variabel eller funksjon kan nås.
* Lifetime: Kontrollerer hvor lenge variabelen eksisterer i minnet.
* Linkage: Dikterer om en variabel eller funksjon kan nås fra andre kildefiler.
Hvorfor er lagringsklasser viktige?
Å forstå lagringsklasser er avgjørende for effektiv C -programmering:
* Memory Management: De hjelper deg med å kontrollere hvordan minne blir tildelt og behandlet.
* kodeorganisasjon: De letter modularitet og gjenbrukbarhet.
* Resultatoptimalisering: Du kan bruke `Register 'for å potensielt forbedre ytelsen ved å lagre variabler i registre.
Tilleggsinformasjon:
* Lagringsklasser er definert ved hjelp av nøkkelord i variabelen eller funksjonserklæringen.
* Nøkkelordet `Auto` er ofte utelatt fordi det er standard lagringsklasse for lokale variabler.
* Nøkkelordet `Register` er et hint for kompilatoren, og det kan ikke alltid bli hedret.
Gi meg beskjed hvis du vil utforske en spesifikk lagringsklasse mer detaljert eller ha flere spørsmål.