C Academy · Lektion

auto och lokal räckvidd

Variabler på blocknivå.

Lektion 1 av 413 steg

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 auto som 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
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 ”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

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