C Academy · leksjon

register og const

Hint og uforanderlighet

Leksjon 4 av 413 trinn

register og const er en gratis leksjon i C Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i C Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i C Academy inneholder totalt 4 leksjoner.

Hintet register

register foreslår at en variabel lagres i et CPU-register for å øke hastigheten. Det er bare et hint; moderne kompilatorer ignorerer det vanligvis.

#include <stdio.h>
int main(void) {
    register int i;
    int sum = 0;
    for (i = 0; i < 5; i++)
        sum += i;
    printf("sum = %d\n", sum);
    return 0;
}

De kan ikke hente adressen dens

Fordi en register-variabel kanskje ikke ligger i minnet, kan De ikke hente adressen dens med &.

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

Hvorfor register sjelden brukes i dag

Optimaliserende kompilatorer plasserer allerede aktive variabler i registre. Nøkkelordet er i hovedsak historisk i dag.

#include <stdio.h>
int main(void) {
    int product = 1;
    for (register int i = 1; i <= 4; i++)
        product *= i;
    printf("product = %d\n", product);
    return 0;
}

Kvalifikatoren const

const gjør en variabel skrivebeskyttet etter initialisering. Forsøk på å endre den gir en kompilatorfeil.

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

Konstanter dokumenterer hensikten

Bruk av const for faste verdier gjør koden tydeligere og beskytter mot utilsiktede endringer.

#include <stdio.h>
int main(void) {
    const double PI = 3.14159;
    double r = 2.0;
    printf("area = %.2f\n", PI * r * r);
    return 0;
}

const med pekere

const int *p betyr at verdien det pekes på, ikke kan endres gjennom p. Selve pekeren kan fortsatt flyttes.

#include <stdio.h>
int main(void) {
    int x = 5;
    const int *p = &x;
    printf("*p = %d\n", *p);
    return 0;
}

Konstant peker

int * const p betyr at pekeren ikke kan endres, men verdien den peker på, kan endres.

#include <stdio.h>
int main(void) {
    int x = 5;
    int * const p = &x;
    *p = 9;
    printf("x = %d\n", x);
    return 0;
}

const-funksjonsparametere

Ved å merke en parameter med const lover De at funksjonen ikke skal endre den. Det gjør det enklere for den som kaller funksjonen, å forstå oppførselen.

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

Uforanderlig etter hensikten

Foretrekk const for alle verdier som ikke skal endres. Det oppdager feil ved kompilering.

#include <stdio.h>
int main(void) {
    const int LIMIT = 100;
    int x = 90;
    if (x < LIMIT)
        printf("under limit\n");
    return 0;
}

Kombinere const og globale variabler

En global const-variabel er en trygg, delt konstant som er tilgjengelig i hele filen.

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

register og const sammen

De kan til og med merke en løkketeller på begge måter, selv om const her betyr at løkkekroppen ikke kan endre den.

#include <stdio.h>
int main(void) {
    int sum = 0;
    for (int i = 0; i < 3; i++) {
        const int doubled = i * 2;
        sum += doubled;
    }
    printf("sum = %d\n", sum);
    return 0;
}

Hurtigsjekk

Test forståelsen Deres av register og const.

Oppsummering: register og const

De har lært om to kvalifikatorer.

  • register antyder registerlagring, men ignoreres vanligvis
  • De kan ikke hente adressen til en register-variabel
  • const gjør en verdi skrivebeskyttet
  • Pekeres const-egenskaper har to varianter: konstant verdi eller konstant peker
  • Bruk const rikelig for økt sikkerhet
Gratis å komme i gang

Lær deg C med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
39
Leksjoner
144

Ofte stilte spørsmål

Er leksjonen «register og const» gratis?

Ja – hele teksten i «register og const» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av C Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i C Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «register og const»?

Hint og uforanderlighet Du øver på C Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med C Academy?

Ingen tidligere erfaring er nødvendig. C Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «register og const»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne C Academy-leksjonen?

Ja. Alle C Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. auto og lokalt scope
  2. static-variabler
  3. extern og globalt scope
  4. register og const
← Tilbake til C Academy