1. Automatico (auto):
* Ambito: Locale al blocco in cui è dichiarato.
* Lifetime: Esiste solo durante l'esecuzione del blocco dove viene dichiarato.
* Collegamento: Nessun collegamento (non accessibile dall'esterno della funzione).
* Esempio:
`` `c
int main () {
int x =10; // 'x' è una variabile automatica
// ...
}
`` `
2. Esterno (esterno):
* Ambito: Portata globale.
* Lifetime: Esiste nell'esecuzione dell'intero programma.
* Collegamento: Collegamento esterno (accessibile da altri file).
* Esempio:
`` `c
// in file1.c
esterno int y; // dichiara 'y' come esterno
// in file2.c
int y =20; // definisce 'y'
`` `
3. Statico:
* Ambito: Locale al blocco in cui è dichiarato.
* Lifetime: Esiste per l'intera esecuzione dell'intero programma.
* Collegamento: Collegamento interno (accessibile solo all'interno del file corrente).
* Esempio:
`` `c
void myfunc () {
static int count =0; // 'Count' mantiene il suo valore tra le chiamate di funzione
conta ++;
printf ("conta:%d \ n", count);
}
`` `
4. Registro:
* Ambito: Locale al blocco in cui è dichiarato.
* Lifetime: Esiste solo durante l'esecuzione del blocco dove viene dichiarato.
* Collegamento: Nessun collegamento (non accessibile dall'esterno della funzione).
* Esempio:
`` `c
void myfunc () {
Registrati int i; // Richiedi per il compilatore per archiviare 'i' in un registro
per (i =0; i <10; i ++) {
// ...
}
}
`` `
Punti chiave:
* Ambito: Determina dove nel programma è possibile accedere a una variabile o una funzione.
* Lifetime: Controlla quanto tempo esiste la variabile in memoria.
* Collegamento: Detta se è possibile accedere a una variabile o funzione da altri file di origine.
Perché le classi di archiviazione sono importanti?
Comprendere le lezioni di archiviazione è cruciale per un'efficace programmazione C:
* Gestione della memoria: Ti aiutano a controllare il modo in cui la memoria viene allocata e deallocata.
* Organizzazione del codice: Facilitano la modularità e la riusabilità del codice.
* Ottimizzazione delle prestazioni: È possibile utilizzare `Register` per migliorare potenzialmente le prestazioni memorizzando le variabili nei registri.
Informazioni aggiuntive:
* Le classi di archiviazione sono definite utilizzando le parole chiave nella Dichiarazione della variabile o della funzione.
* La parola chiave `Auto` viene spesso omessa perché è la classe di archiviazione predefinita per le variabili locali.
* La parola chiave `Register` è un suggerimento per il compilatore e potrebbe non essere sempre onorata.
Fammi sapere se desideri esplorare una classe di archiviazione specifica in modo più dettagliato o avere altre domande.
hardware © www.354353.com