register og const
Hints og uforanderlighed
register og const er en gratis C Academy-lektion på CoddyKit. Dette er lektion 4 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.
Tipset register
register foreslår, at en variabel opbevares i et CPU-register for at øge hastigheden. Det er kun et tip; moderne compilere ignorerer det som regel.
#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;
}Du kan ikke tage dens adresse
Da en register-variabel muligvis ikke ligger i hukommelsen, må du ikke tage dens adresse med &.
#include <stdio.h>
int main(void) {
register int x = 10;
printf("x = %d\n", x);
return 0;
}Hvorfor register sjældent bruges i dag
Optimerende compilere placerer allerede ofte benyttede variabler i registre. Nøgleordet er i dag mest historisk.
#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;
}const-kvalifikatoren
const gør en variabel skrivebeskyttet efter initialisering. Hvis du forsøger at ændre den, opstår der en kompileringsfejl.
#include <stdio.h>
int main(void) {
const int DAYS = 7;
printf("DAYS = %d\n", DAYS);
return 0;
}Konstanter dokumenterer hensigten
Brug af const til faste værdier gør koden tydeligere og beskytter mod utilsigtede ændringer.
#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 pointere
const int *p betyder, at den værdi, der peges på, ikke kan ændres via p. Selve pointeren kan stadig flyttes.
#include <stdio.h>
int main(void) {
int x = 5;
const int *p = &x;
printf("*p = %d\n", *p);
return 0;
}Konstant pointer
int * const p betyder, at pointeren ikke kan ændres, men at den værdi, den peger på, godt kan.
#include <stdio.h>
int main(void) {
int x = 5;
int * const p = &x;
*p = 9;
printf("x = %d\n", x);
return 0;
}const-funktionsparametre
Hvis en parameter markeres med const, lover det, at funktionen ikke ændrer den. Det hjælper kaldende kode med at gennemskue funktionens opførsel.
#include <stdio.h>
void show(const int n) {
printf("n = %d\n", n);
}
int main(void) {
show(42);
return 0;
}Uforanderlig efter design
Foretræk const for alle værdier, der ikke bør ændres. Det opdager fejl under kompileringen.
#include <stdio.h>
int main(void) {
const int LIMIT = 100;
int x = 90;
if (x < LIMIT)
printf("under limit\n");
return 0;
}Kombination af const og globale variabler
En global const-variabel er en sikker, delt konstant, der er tilgængelig i hele filen.
#include <stdio.h>
const int VERSION = 2;
int main(void) {
printf("VERSION = %d\n", VERSION);
return 0;
}register og const sammen
Du kan endda markere en løkketæller på begge måder, selv om const her betyder, at løkkens krop ikke må ændre 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;
}Hurtigt tjek
Test din forståelse af register og const.
Opsummering: register og const
Du har lært om to kvalifikatorer.
registergiver et tip om registerlagring, men ignoreres som regel- Du kan ikke tage adressen på en registervariabel
constgør en værdi skrivebeskyttet- const for pointere findes i to varianter: konstant værdi eller konstant pointer
- Brug
constrigeligt for at øge sikkerheden
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 “register og const” gratis?
Ja — hele teksten til “register og const” 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 “register og const”?
Hints og uforanderlighed 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 4 af 4.
Hvor lang tid tager lektionen “register og const”?
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
- auto og lokalt scope
- static-variabler
- extern og globale variabler
- register og const