const-variabler
Gør værdier skrivebeskyttede.
const-variabler er en gratis C Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i C Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C Academy-kurset indeholder 4 lektioner i alt.
Hvad const betyder
Nøgleordet const fortæller compileren, at en variables værdi ikke må ændres efter initialisering.
Hvis du forsøger at ændre den senere, mislykkes kompileringen. Det beskytter værdier, som skal forblive faste.
const int MAX_USERS = 100;Erklæring af const
Du skal give en const-variabel sin værdi, når du erklærer den, fordi du ikke kan tildele den en værdi bagefter.
Her initialiseres PI én gang og bruges som en almindelig variabel til læsning.
#include <stdio.h>
int main(void) {
const double PI = 3.14159;
printf("%f\n", PI);
return 0;
}Forsøg på at ændre const
En tildeling til const efter erklæringen er en kompileringsfejl.
Linjen nedenfor ville blive afvist af compileren, hvilket er præcis den beskyttelse, vi ønsker.
const int LIMIT = 50;
/* LIMIT = 60; <- compile error */const har en type
I modsætning til en rå makro har en const-variabel en rigtig type, som compileren kontrollerer.
Det giver typesikkerhed: Compileren ved, at RATE er en double, og advarer om forkert brug.
#include <stdio.h>
int main(void) {
const double RATE = 0.05;
double total = 200.0 * RATE;
printf("%.2f\n", total);
return 0;
}const med pointere: Data
Const-egenskaber for pointere findes i to varianter. const int *p betyder, at de data, der peges på, ikke kan ændres gennem p.
Du kan stadig flytte p, så den peger et andet sted, men du kan ikke skrive gennem den.
int x = 5;
const int *p = &x;
/* *p = 9; <- error: data is const */const med pointere: Pointer
int *const p betyder, at selve pointeren ikke kan tildeles en ny værdi, men at dataene kan ændres.
Læs erklæringer fra højre mod venstre: "p er en const-pointer til int".
int x = 5, y = 8;
int *const p = &x;
*p = 9; /* allowed */
/* p = &y; <- error: pointer is const */Beskyttelse af funktionsargumenter
Hvis du markerer en pointerparameter med const, lover funktionen ikke at ændre kalderens data.
Det dokumenterer hensigten og lader compileren fange utilsigtede skrivninger.
#include <stdio.h>
void show(const char *msg) {
printf("%s\n", msg);
}
int main(void) {
show("hello");
return 0;
}const i en beregning
En almindelig anvendelse er faste konfigurationsværdier som en skattesats eller en omregningsfaktor.
Når konstanten læses, bliver formlen tydelig, og værdien findes kun ét sted.
#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;
}Const har en hukommelsesplacering
Fordi en const er en rigtig variabel, optager den hukommelse, og du kan tage dens adresse.
Det adskiller den fra en #define-makro, som er ren teksterstatning uden en adresse.
#include <stdio.h>
int main(void) {
const int N = 42;
const int *p = &N;
printf("%d\n", *p);
return 0;
}Område og levetid
En const følger de samme regler for synlighedsområde som almindelige variabler.
Hvis den deklareres inde i en funktion, er den lokal; hvis den deklareres uden for en funktion, er den global. Dette synlighedsområde er endnu en fordel sammenlignet med makroer, der gælder for hele filen.
#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 og magiske tal
Hvis du erstatter rå tal i din kode med navngivne const-værdier, fjerner du de såkaldte »magiske tal«.
Hvis værdien ændres, skal du redigere én linje i stedet for at lede hele programmet igennem.
#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;
}Hurtig kontrol
Kontrollér, hvor godt du forstår const-adfærden.
Opsummering
En const-variabel er en værditype med en type, som compileren beskytter mod ændringer.
Den har en type, et synlighedsområde og en adresse i modsætning til en makro. Med pointere kan const gælde dataene, pointeren eller begge dele. Derefter sammenligner vi dette med #define.
Lær C med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 39
- Lektioner
- 144
Ofte stillede spørgsmål
Er lektionen “const-variabler” gratis?
Ja — hele teksten til “const-variabler” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af C Academy-kurset, skal du opgradere til CoddyKit PRO. C Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “const-variabler”?
Gør værdier skrivebeskyttede. Du øver dig i C Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på C Academy?
Der kræves ingen tidligere erfaring. C Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “const-variabler”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne C Academy-lektion?
Ja. Alle C Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Definér enums
- Enum-værdier og ranges
- const-variabler
- #define-konstanter