I C -programmering bestämmer lagringsklasser
räckvidden ,
livstid och
länk av en variabel eller funktion. De styr hur kompilatorn hanterar minnet som tilldelas dessa element. Låt oss bryta ner varje lagringsklass:
1. Automatisk (auto):
* Omfattning: Lokalt till blocket där det förklaras.
* livstid: Finns endast under körningen av blocket där det förklaras.
* Länk: Ingen koppling (inte tillgänglig utanför funktionen).
* Exempel:
`` `c
int main () {
int x =10; // 'x' är en automatisk variabel
// ...
}
`` `
2. Extern (extern):
* Omfattning: Global omfattning.
* livstid: Finns under hela programmets exekvering.
* Länk: Extern länk (tillgänglig från andra filer).
* Exempel:
`` `c
// i fil1.c
extern int y; // förklarar 'y' som extern
// i fil2.c
int y =20; // definierar 'y'
`` `
3. Statisk:
* Omfattning: Lokalt till blocket där det förklaras.
* livstid: Finns för hela programmets exekvering.
* Länk: Intern koppling (endast tillgänglig i den aktuella filen).
* Exempel:
`` `c
void myfunc () {
statisk int count =0; // 'Count' behåller sitt värde mellan funktionssamtal
Räkna ++;
printf ("räkning:%d \ n", räkning);
}
`` `
4. Registrera:
* Omfattning: Lokalt till blocket där det förklaras.
* livstid: Finns endast under körningen av blocket där det förklaras.
* Länk: Ingen koppling (inte tillgänglig utanför funktionen).
* Exempel:
`` `c
void myfunc () {
Registrera int i; // begär att kompilatorn ska lagra 'i' i ett register
för (i =0; i <10; i ++) {
// ...
}
}
`` `
Nyckelpunkter:
* Omfattning: Bestämmer var i programmet kan en variabel eller funktion nås.
* livstid: Kontrollerar hur länge variabeln finns i minnet.
* Länk: Dikterar om en variabel eller funktion kan nås från andra källfiler.
Varför är lagringskurser viktiga?
Att förstå lagringsklasser är avgörande för effektiv C -programmering:
* Minneshantering: De hjälper dig att kontrollera hur minnet tilldelas och återförsäljas.
* Kodorganisation: De underlättar modularitet och återanvändbarhet för kod.
* Prestandaoptimering: Du kan använda "Registrera" för att potentiellt förbättra prestanda genom att lagra variabler i register.
Ytterligare information:
* Lagringsklasser definieras med hjälp av nyckelord i variabel eller funktionsdeklaration.
* Nyckelordet "Auto" utelämnas ofta eftersom det är standardlagringsklassen för lokala variabler.
* Nyckelordet "Register" är ett tips till kompilatorn och det kanske inte alltid hedras.
Låt mig veta om du vill utforska en specifik lagringsklass mer detaljerat eller ha fler frågor.