In C -programmering bepalen opslagklassen de scope , Lifetime , en koppeling van een variabele of functie. Ze bepalen hoe de compiler het geheugen beheert dat aan deze elementen is toegewezen. Laten we elke opslagklasse afbreken:
1. Automatisch (auto):
* Scope: Lokaal naar het blok waarin het wordt verklaard.
* Lifetime: Bestaat alleen tijdens de uitvoering van het blok waar het wordt verklaard.
* Linkage: Geen koppeling (niet toegankelijk van buiten de functie).
* Voorbeeld:
`` `C
int main () {
int x =10; // 'x' is een automatische variabele
// ...
}
`` `
2. Extern (extern):
* Scope: Globale reikwijdte.
* Lifetime: Bestaat gedurende de uitvoering van het hele programma.
* Linkage: Externe koppeling (toegankelijk vanaf andere bestanden).
* Voorbeeld:
`` `C
// in bestand1.c
extern int y; // verklaart 'y' als extern
// in bestand2.c
int y =20; // definieert 'y'
`` `
3. Statisch:
* Scope: Lokaal naar het blok waar het wordt verklaard.
* Lifetime: Bestaat voor de uitvoering van het hele programma.
* Linkage: Interne koppeling (alleen toegankelijk in het huidige bestand).
* Voorbeeld:
`` `C
void myfunc () {
statische int count =0; // 'count' behoudt zijn waarde tussen functieoproepen
tel ++;
printf ("Count:%d \ n", count);
}
`` `
4. Registreer:
* Scope: Lokaal naar het blok waar het wordt verklaard.
* Lifetime: Bestaat alleen tijdens de uitvoering van het blok waar het wordt verklaard.
* Linkage: Geen koppeling (niet toegankelijk van buiten de functie).
* Voorbeeld:
`` `C
void myfunc () {
Register int i; // Verzoek om de compiler om 'i' op te slaan in een register
voor (i =0; i <10; i ++) {
// ...
}
}
`` `
Sleutelpunten:
* Scope: Bepaalt waar in het programma een variabele of functie toegankelijk is.
* Lifetime: Bepaalt hoe lang de variabele bestaat in het geheugen.
* Linkage: Bepaalt of een variabele of functie toegankelijk is via andere bronbestanden.
Waarom zijn opslagklassen belangrijk?
Inzicht in opslagklassen is cruciaal voor effectieve C -programmering:
* geheugenbeheer: Ze helpen u te bepalen hoe het geheugen wordt toegewezen en wordt gedeeld.
* Code -organisatie: Ze vergemakkelijken modulariteit en herbruikbaarheid van code.
* Prestatie -optimalisatie: U kunt 'register' gebruiken om de prestaties mogelijk te verbeteren door variabelen in registers op te slaan.
Aanvullende informatie:
* Opslagklassen worden gedefinieerd met behulp van trefwoorden in de variabele of functie -verklaring.
* Het trefwoord `Auto` wordt vaak weggelaten omdat het de standaardopslagklasse is voor lokale variabelen.
* Het trefwoord `register` is een hint voor de compiler en het kan niet altijd worden geëerd.
Laat het me weten als u een specifieke opslagklasse in meer detail wilt verkennen of nog meer vragen wilt hebben. |