C Academy · Lektion

extern och global räckvidd

Dela mellan filer.

Lektion 3 av 413 steg

extern och global räckvidd är en gratis lektion i C Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för C Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i C Academy innehåller totalt 4 lektioner.

Globala variabler

En variabel som deklareras utanför alla funktioner har filräckvidd och finns under hela programmets livstid. Den är en global variabel.

#include <stdio.h>
int counter = 0;
void bump(void) {
    counter++;
}
int main(void) {
    bump();
    bump();
    printf("counter = %d\n", counter);
    return 0;
}

Globala variabler delas

Alla funktioner i filen kan läsa och skriva en global variabel. Det gör dem praktiska, men också lätta att missbruka.

#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;
}

Noll som standardvärde

Globala variabler utan initierare börjar automatiskt med värdet 0.

#include <stdio.h>
int total;
int main(void) {
    printf("total = %d\n", total);
    return 0;
}

Nyckelordet extern

extern deklarerar en global variabel som definieras någon annanstans. Det talar om för kompilatorn att variabeln finns, utan att allokera minne för den.

#include <stdio.h>
int shared = 5;
extern int shared;
int main(void) {
    printf("shared = %d\n", shared);
    return 0;
}

Deklaration kontra definition

En definition allokerar minne. En deklaration namnger bara något. extern-deklarationer allokerar inte minne.

#include <stdio.h>
int value = 42;
int main(void) {
    extern int value;
    printf("value = %d\n", value);
    return 0;
}

Dela mellan filer

I projekt med flera filer definierar en .c-fil den globala variabeln, och andra filer använder extern i en headerfil för att komma åt den.

#include <stdio.h>
extern int globalCount;
int globalCount = 3;
int main(void) {
    printf("globalCount = %d\n", globalCount);
    return 0;
}

Funktioner kan också vara extern

Funktioner har extern länkning som standard, så en prototyp är i praktiken en extern-deklaration av funktionen.

#include <stdio.h>
extern void hello(void);
void hello(void) {
    printf("Hello from extern\n");
}
int main(void) {
    hello();
    return 0;
}

Globala variablers livstid

Globala variabler finns från programmets start till dess slut, så deras värden består under alla funktionsanrop.

#include <stdio.h>
int visits = 0;
void page(void) { visits++; }
int main(void) {
    page();
    page();
    page();
    printf("visits = %d\n", visits);
    return 0;
}

Risker med globala variabler

Eftersom all kod kan ändra en global variabel blir fel svåra att spåra. Skicka värden som parametrar när det är möjligt.

#include <stdio.h>
int config = 1;
int compute(int input) {
    return input * config;
}
int main(void) {
    printf("%d\n", compute(8));
    return 0;
}

Skrivskyddade globala variabler

Kombinera const med en global variabel för att skapa en delad konstant som ingen kan ändra.

#include <stdio.h>
const int MAX_USERS = 50;
int main(void) {
    printf("MAX_USERS = %d\n", MAX_USERS);
    return 0;
}

Praktiskt mönster

Ett globalt konfigurationsvärde som läses av flera funktioner är ett vanligt och godtagbart användningsområde.

#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;
}

Snabbtest

Testa dina kunskaper om extern och globala variabler.

Sammanfattning: extern och globala variabler

Du har lärt dig om globala variabler och extern länkning.

  • Globala variabler har filräckvidd och finns under hela programmets livstid
  • De har standardvärdet 0 och delas av alla funktioner
  • extern deklarerar en global variabel som definieras någon annanstans
  • En definition allokerar minne, medan en deklaration bara namnger något
  • Använd globala variabler sparsamt för att undvika dold koppling
Gratis att börja

Lär dig C med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
39
Lektioner
144

Vanliga frågor

Är lektionen ”extern och global räckvidd” gratis?

Ja – hela texten till ”extern och global räckvidd” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i C Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i C Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”extern och global räckvidd”?

Dela mellan filer. Ni övar på C Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig C Academy?

Du behöver inga förkunskaper. Utbildningen i C Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”extern och global räckvidd”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här C Academy-lektionen?

Ja. Varje C Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. auto och lokal räckvidd
  2. static-variabler
  3. extern och global räckvidd
  4. register och const
← Tillbaka till C Academy