C Academy · Les

const-variabelen

Maak waarden alleen-lezen.

Les 3 van 413 stappen

const-variabelen is een gratis C Academy-les op CoddyKit. Dit is les 3 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.

Wat const betekent

Het sleutelwoord const vertelt de compiler dat de waarde van een variabele na initialisatie niet mag veranderen.

Als je de waarde later probeert te wijzigen, mislukt het compileren. Zo bescherm je waarden die onveranderd moeten blijven.

const int MAX_USERS = 100;

Een const declareren

Je moet een const-variabele haar waarde geven wanneer je haar declareert, omdat je er daarna niets meer aan kunt toewijzen.

Hier wordt PI één keer geïnitialiseerd en daarna voor het lezen gebruikt als elke gewone variabele.

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

Een const proberen te wijzigen

Toewijzen aan een const na de declaratie is een compileerfout.

De onderstaande regel zou door de compiler worden afgewezen. Dat is precies de bescherming die we willen.

const int LIMIT = 50;
/* LIMIT = 60; <- compile error */

const heeft een type

In tegenstelling tot een onbewerkte macro heeft een const-variabele een echt type dat de compiler controleert.

Dit geeft typeveiligheid: de compiler weet dat RATE een double is en waarschuwt bij verkeerd gebruik.

#include <stdio.h>
int main(void) {
    const double RATE = 0.05;
    double total = 200.0 * RATE;
    printf("%.2f\n", total);
    return 0;
}

const met pointers: gegevens

Const-ness van pointers kent twee vormen. const int *p betekent dat de gegevens waarnaar wordt verwezen niet via p kunnen worden gewijzigd.

Je kunt p nog steeds verplaatsen zodat die ergens anders naar verwijst, maar je kunt er niet viaheen schrijven.

int x = 5;
const int *p = &x;
/* *p = 9; <- error: data is const */

const met pointers: pointer

int *const p betekent dat de pointer zelf niet opnieuw kan worden toegewezen, maar dat de gegevens wel kunnen worden gewijzigd.

Lees declaraties van rechts naar links: "p is een const-pointer naar int".

int x = 5, y = 8;
int *const p = &x;
*p = 9;       /* allowed */
/* p = &y;    <- error: pointer is const */

Functieargumenten beschermen

Als je een pointerparameter markeert met const, beloof je dat de functie de gegevens van de aanroeper niet wijzigt.

Dit legt de bedoeling vast en zorgt ervoor dat de compiler onbedoelde schrijfacties kan detecteren.

#include <stdio.h>
void show(const char *msg) {
    printf("%s\n", msg);
}
int main(void) {
    show("hello");
    return 0;
}

const in een berekening

Een veelgebruikte toepassing is het vastleggen van configuratiewaarden, zoals een belastingtarief of een conversiefactor.

Door de constante uit te lezen, blijft de formule duidelijk en staat de waarde op één centrale plek.

#include <stdio.h>
int main(void) {
    const double KM_PER_MILE = 1.609;
    double miles = 10.0;
    printf("%.2f km\n", miles * KM_PER_MILE);
    return 0;
}

Constante heeft een geheugenlocatie

Omdat een const een echte variabele is, neemt deze geheugenruimte in beslag en kun je het adres ervan opvragen.

Dit verschilt van een #define-macro, die uitsluitend tekst vervangt en geen adres heeft.

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

Bereik en levensduur

Een const volgt dezelfde bereikregels als gewone variabelen.

Als je deze binnen een functie declareert, is deze lokaal; buiten een functie is deze globaal. Dit bereik is nog een voordeel ten opzichte van macro's die voor het hele bestand gelden.

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

const en magische getallen

Door onbewerkte getallen in je code te vervangen door benoemde const-waarden, verwijder je 'magische getallen'.

Als de waarde ooit verandert, hoef je maar één regel aan te passen in plaats van het hele programma te doorzoeken.

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

Korte controle

Controleer of je het gedrag van const begrijpt.

Samenvatting

Een const-variabele is een getypeerde, alleen-lezenwaarde die door de compiler tegen wijzigingen wordt beschermd.

Deze heeft een type, een bereik en een adres, in tegenstelling tot een macro. Bij pointers kan const van toepassing zijn op de gegevens, de pointer of beide. Vervolgens vergelijken we dit met #define.

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 “const-variabelen” gratis?

Ja — de volledige tekst van “const-variabelen” 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 “const-variabelen”?

Maak waarden alleen-lezen. 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 3 van 4.

Hoe lang duurt de les “const-variabelen”?

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. Enums definiëren
  2. Enumwaarden en bereiken
  3. const-variabelen
  4. #define-constanten
← Terug naar C Academy