extern och global räckvidd
Dela mellan filer.
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
externdeklarerar 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
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
- auto och lokal räckvidd
- static-variabler
- extern och global räckvidd
- register och const