extern e globale
Condivisione tra file
extern e globale è una lezione C Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C Academy include 4 lezioni in totale.
Variabili globali
Una variabile dichiarata fuori da qualsiasi funzione ha ambito di file e resta in memoria per l’intero programma. È una variabile globale.
#include <stdio.h>
int counter = 0;
void bump(void) {
counter++;
}
int main(void) {
bump();
bump();
printf("counter = %d\n", counter);
return 0;
}Le globali sono condivise
Ogni funzione del file può leggere e modificare una variabile globale. Questo le rende comode, ma facili da usare in modo improprio.
#include <stdio.h>
int score = 100;
void penalty(void) { score -= 25; }
void bonus(void) { score += 10; }
int main(void) {
penalty();
bonus();
printf("score = %d\n", score);
return 0;
}Inizializzazione automatica a zero
Le variabili globali senza inizializzatore iniziano automaticamente con il valore 0.
#include <stdio.h>
int total;
int main(void) {
printf("total = %d\n", total);
return 0;
}La parola chiave extern
extern dichiara una variabile globale definita altrove. Indica al compilatore che la variabile esiste senza allocare memoria per essa.
#include <stdio.h>
int shared = 5;
extern int shared;
int main(void) {
printf("shared = %d\n", shared);
return 0;
}Dichiarazione e definizione
Una definizione alloca memoria. Una dichiarazione si limita a dare un nome a qualcosa. Le dichiarazioni extern non allocano memoria.
#include <stdio.h>
int value = 42;
int main(void) {
extern int value;
printf("value = %d\n", value);
return 0;
}Condivisione tra file
Nei progetti composti da più file, un file .c definisce la variabile globale e gli altri file usano extern in un file header per accedervi.
#include <stdio.h>
extern int globalCount;
int globalCount = 3;
int main(void) {
printf("globalCount = %d\n", globalCount);
return 0;
}Anche le funzioni possono essere extern
Le funzioni hanno un collegamento esterno per impostazione predefinita, quindi un prototipo è di fatto una dichiarazione extern di quella funzione.
#include <stdio.h>
extern void hello(void);
void hello(void) {
printf("Hello from extern\n");
}
int main(void) {
hello();
return 0;
}Durata delle variabili globali
Le variabili globali esistono dall’inizio alla fine del programma, quindi i loro valori persistono durante tutte le chiamate alle funzioni.
#include <stdio.h>
int visits = 0;
void page(void) { visits++; }
int main(void) {
page();
page();
page();
printf("visits = %d\n", visits);
return 0;
}Rischi delle variabili globali
Poiché qualsiasi parte del codice può modificare una variabile globale, diventa difficile risalire all’origine dei bug. Quando possibile, preferisca passare i valori come parametri.
#include <stdio.h>
int config = 1;
int compute(int input) {
return input * config;
}
int main(void) {
printf("%d\n", compute(8));
return 0;
}Variabili globali in sola lettura
Combini const con una variabile globale per creare una costante condivisa che nessuno può modificare.
#include <stdio.h>
const int MAX_USERS = 50;
int main(void) {
printf("MAX_USERS = %d\n", MAX_USERS);
return 0;
}Schema pratico
Un valore di configurazione globale letto da diverse funzioni è un impiego comune e accettabile.
#include <stdio.h>
int multiplier = 3;
int scale(int x) { return x * multiplier; }
int main(void) {
printf("%d\n", scale(4));
printf("%d\n", scale(7));
return 0;
}Verifica rapida
Verifichi la Sua comprensione di extern e delle variabili globali.
Riepilogo: extern e variabili globali
Ha imparato a conoscere le variabili globali e il collegamento esterno.
- Le variabili globali hanno ambito di file e durata pari a quella del programma
- Hanno valore predefinito 0 e sono condivise da tutte le funzioni
externdichiara una variabile globale definita altrove- La definizione alloca memoria, mentre la dichiarazione si limita a dare un nome
- Usi le variabili globali con moderazione per evitare dipendenze nascoste
Domande Frequenti
La lezione «extern e globale» è gratuita?
Sì — il testo completo di «extern e globale» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C Academy, passa a CoddyKit PRO. Il corso C Academy include 4 lezioni in totale.
Cosa imparerò in «extern e globale»?
Condivisione tra file Eserciti C Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C Academy?
Non è richiesta alcuna esperienza precedente. C Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «extern e globale»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C Academy?
Sì. Ogni lezione C Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- auto e ambito locale
- Variabili static
- extern e globale
- register e const