0Pricing
C Academy · Lezione

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
  • extern dichiara 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

  1. auto e ambito locale
  2. Variabili static
  3. extern e globale
  4. register e const
← Torna a C Academy