auto och lokal räckvidd
Variabler på blocknivå.
auto och lokal räckvidd är en gratis lektion i C Academy på CoddyKit. Detta är lektion 1 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.
Vad är räckvidd
Räckvidd är det kodområde där ett namn är synligt. I C är variabler som deklareras i ett block synliga endast inom det blocket.
#include <stdio.h>
int main(void) {
int x = 5;
printf("x = %d\n", x);
return 0;
}Lagringsklassen auto
Lokala variabler har auto som standard. Nyckelordet skrivs sällan ut eftersom det är underförstått för alla variabler med blockräckvidd.
#include <stdio.h>
int main(void) {
auto int n = 42;
printf("n = %d\n", n);
return 0;
}Blockräckvidd
Ett par klammerparenteser skapar ett nytt block. Variablerna i blocket försvinner när blocket avslutas.
#include <stdio.h>
int main(void) {
{
int inner = 10;
printf("inner = %d\n", inner);
}
return 0;
}Automatisk livstid
En auto-variabel skapas när dess block gås in i och förstörs när blocket lämnas. Detta är dess livstid.
#include <stdio.h>
int main(void) {
for (int i = 0; i < 2; i++) {
int fresh = i * 10;
printf("fresh = %d\n", fresh);
}
return 0;
}Skuggning
En variabel i ett inre block kan skugga en yttre variabel med samma namn. Det inre namnet gäller i dess block.
#include <stdio.h>
int main(void) {
int x = 1;
{
int x = 99;
printf("inner x = %d\n", x);
}
printf("outer x = %d\n", x);
return 0;
}Funktionsparametrar är lokala
Parametrar är också lokala variabler. De finns bara medan funktionen körs.
#include <stdio.h>
int square(int n) {
return n * n;
}
int main(void) {
printf("%d\n", square(6));
return 0;
}Oinitierade lokala variabler
En auto-variabel nollställs inte automatiskt. Om du läser den före en tilldelning får du skräpdata. Initiera alltid variabler.
#include <stdio.h>
int main(void) {
int x = 0;
x = x + 5;
printf("x = %d\n", x);
return 0;
}Lokala variabler per anrop
Varje anrop av en funktion får en egen ny kopia av sina lokala variabler.
#include <stdio.h>
void greet(void) {
int count = 1;
printf("count = %d\n", count);
}
int main(void) {
greet();
greet();
return 0;
}Varför lokala variabler är bra
Lokal räckvidd håller variabler avgränsade och undviker oavsiktlig påverkan mellan olika delar av ett program.
#include <stdio.h>
int main(void) {
int a = 3;
{
int b = 4;
printf("a + b = %d\n", a + b);
}
return 0;
}Kapslade block
Block kan kapslas i varandra. Inre block kan läsa yttre variabler, men yttre block kan inte läsa inre variabler.
#include <stdio.h>
int main(void) {
int outer = 1;
{
int middle = 2;
{
int inner = 3;
printf("%d\n", outer + middle + inner);
}
}
return 0;
}Räckvidd och loopar
En variabel som deklareras i huvudet på en for-loop har räckvidd endast inom loopen.
#include <stdio.h>
int main(void) {
int sum = 0;
for (int i = 1; i <= 4; i++)
sum += i;
printf("sum = %d\n", sum);
return 0;
}Snabbtest
Testa dina kunskaper om auto och lokal räckvidd.
Sammanfattning: auto och lokal räckvidd
Du har lärt dig hur lokala variabler fungerar.
- Variabler med blockräckvidd är
autosom standard - Deras livstid är knuten till blocket
- Inre namn kan skugga yttre namn
- Lokala variabler initieras inte automatiskt
- Varje funktionsanrop får nya lokala variabler
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 ”auto och lokal räckvidd” gratis?
Ja – hela texten till ”auto och lokal 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 ”auto och lokal räckvidd”?
Variabler på blocknivå. 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 1 av 4.
Hur lång tid tar lektionen ”auto och lokal 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