C Academy · Les

register en const

Hints en onveranderlijkheid

Les 4 van 413 stappen

register en const is een gratis C Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C Academy bevat in totaal 4 lessen.

De register-hint

register suggereert dat een variabele voor snelheid in een CPU-register moet worden bewaard. Het is slechts een hint; moderne compilers negeren die meestal.

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

Je kunt het adres niet opvragen

Omdat een register-variabele mogelijk niet in het geheugen staat, mag je het adres ervan niet opvragen met &.

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

Waarom register tegenwoordig zelden wordt gebruikt

Optimaliserende compilers plaatsen veelgebruikte variabelen al in registers. Het sleutelwoord is tegenwoordig grotendeels historisch.

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

De const-kwalificatie

const maakt een variabele na initialisatie alleen-lezen. Als je de variabele probeert te wijzigen, ontstaat er een compilatiefout.

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

Constanten leggen de bedoeling vast

Door const voor vaste waarden te gebruiken, wordt code duidelijker en wordt de code beschermd tegen onbedoelde wijzigingen.

#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 met pointers

const int *p betekent dat de waarde waarnaar wordt verwezen niet via p kan worden gewijzigd. De pointer zelf kan nog wel naar iets anders wijzen.

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

Constante pointer

int * const p betekent dat de pointer niet kan veranderen, maar dat de waarde waarnaar deze wijst wel kan veranderen.

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

const-functieparameters

Als je een parameter markeert met const, beloof je dat de functie die parameter niet wijzigt. Dat helpt aanroepers het gedrag te begrijpen.

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

Onveranderlijk door ontwerp

Gebruik bij voorkeur const voor elke waarde die niet mag veranderen. Zo worden fouten al tijdens het compileren gevonden.

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

const combineren met globale variabelen

Een globale const-variabele is een veilige, gedeelde constante die in het hele bestand beschikbaar is.

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

register en const samen

Je kunt een lusteller zelfs op beide manieren markeren, hoewel const hier betekent dat de lusbody de teller niet mag wijzigen.

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

Korte controle

Test je begrip van register en const.

Samenvatting: register en const

Je hebt twee kwalificaties geleerd.

  • register suggereert opslag in een register, maar wordt meestal genegeerd
  • Je kunt het adres van een registervariabele niet opvragen
  • const maakt een waarde alleen-lezen
  • Const-correctheid van pointers kent twee vormen: constante waarde versus constante pointer
  • Gebruik const royaal voor veiligheid
Gratis beginnen

Leer C met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
39
Lessen
144

Veelgestelde vragen

Is de les “register en const” gratis?

Ja — de volledige tekst van “register en const” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus C Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus C Academy bevat in totaal 4 lessen.

Wat leer ik in “register en const”?

Hints en onveranderlijkheid Je oefent met C Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met C Academy te beginnen?

Ervaring vooraf is niet nodig. C Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “register en const”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over C Academy?

Ja. Elke les over C Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. auto en lokale scope
  2. static-variabelen
  3. extern en globaal
  4. register en const
← Terug naar C Academy