const-Variablen
Machen Sie Werte schreibgeschützt.
const-Variablen ist eine kostenlose C Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C Academy-Kurs umfasst insgesamt 4 Lektionen.
Was const bedeutet
Das Schlüsselwort const teilt dem Compiler mit, dass sich der Wert einer Variablen nach der Initialisierung nicht ändern darf.
Wenn Sie später versuchen, ihn zu ändern, schlägt die Kompilierung fehl. So werden Werte geschützt, die unverändert bleiben sollen.
const int MAX_USERS = 100;Eine const-Variable deklarieren
Sie müssen einer const-Variablen bei der Deklaration einen Wert geben, da Sie ihr danach keinen Wert mehr zuweisen können.
Hier wird PI einmal initialisiert und anschließend wie jede normale Variable zum Lesen verwendet.
#include <stdio.h>
int main(void) {
const double PI = 3.14159;
printf("%f\n", PI);
return 0;
}Versuchen, eine const-Variable zu ändern
Eine Zuweisung an eine const-Variable nach ihrer Deklaration ist ein Kompilierungsfehler.
Die folgende Zeile würde vom Compiler abgewiesen – genau das ist der gewünschte Schutz.
const int LIMIT = 50;
/* LIMIT = 60; <- compile error */const ist typisiert
Im Gegensatz zu einem einfachen Makro besitzt eine const-Variable einen echten Typ, den der Compiler prüft.
Das bietet Typsicherheit: Der Compiler weiß, dass RATE ein double ist, und warnt bei falscher Verwendung.
#include <stdio.h>
int main(void) {
const double RATE = 0.05;
double total = 200.0 * RATE;
printf("%.2f\n", total);
return 0;
}const mit Zeigern: Daten
Bei Zeigern gibt es zwei Arten von const. const int *p bedeutet, dass die Daten, auf die gezeigt wird, nicht über p geändert werden können.
Sie können p weiterhin so ändern, dass der Zeiger auf eine andere Stelle zeigt, aber Sie können nicht über ihn schreiben.
int x = 5;
const int *p = &x;
/* *p = 9; <- error: data is const */const mit Zeigern: Zeiger
int *const p bedeutet, dass der Zeiger selbst nicht neu zugewiesen werden kann, die Daten aber geändert werden können.
Lesen Sie Deklarationen von rechts nach links: "p ist ein const-Zeiger auf int".
int x = 5, y = 8;
int *const p = &x;
*p = 9; /* allowed */
/* p = &y; <- error: pointer is const */Funktionsargumente schützen
Wenn Sie einen Zeigerparameter mit const markieren, versprechen Sie, dass die Funktion die Daten des Aufrufers nicht verändert.
Damit dokumentieren Sie die Absicht und ermöglichen es dem Compiler, versehentliche Schreibzugriffe zu erkennen.
#include <stdio.h>
void show(const char *msg) {
printf("%s\n", msg);
}
int main(void) {
show("hello");
return 0;
}const in einer Berechnung
Eine häufige Verwendung sind feste Konfigurationswerte, etwa ein Steuersatz oder ein Umrechnungsfaktor.
Das Lesen der Konstanten hält die Formel übersichtlich und den Wert an einer einzigen Stelle.
#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 hat einen Speicherort
Da ein const eine echte Variable ist, belegt es Speicher, und Sie können seine Adresse ermitteln.
Das unterscheidet es von einem #define-Makro, das lediglich eine Textersetzung ohne Adresse ist.
#include <stdio.h>
int main(void) {
const int N = 42;
const int *p = &N;
printf("%d\n", *p);
return 0;
}Gültigkeitsbereich und Lebensdauer
Ein const folgt denselben Regeln für den Gültigkeitsbereich wie gewöhnliche Variablen.
Wird es innerhalb einer Funktion deklariert, ist es lokal; wird es außerhalb deklariert, ist es global. Dieser Gültigkeitsbereich ist ein weiterer Vorteil gegenüber dateiweiten Makros.
#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 und magische Zahlen
Wenn Sie rohe Zahlen in Ihrem Code durch benannte const-Werte ersetzen, verschwinden die „magischen Zahlen“.
Falls sich der Wert jemals ändert, bearbeiten Sie nur eine Zeile, anstatt das gesamte Programm zu durchsuchen.
#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;
}Schnelltest
Überprüfen Sie Ihr Verständnis des Verhaltens von const.
Zusammenfassung
Eine const-Variable ist ein typisierter, schreibgeschützter Wert, den der Compiler vor Änderungen schützt.
Sie besitzt im Gegensatz zu einem Makro einen Typ, einen Gültigkeitsbereich und eine Adresse. Bei Zeigern kann sich const auf die Daten, den Zeiger oder auf beides beziehen. Als Nächstes vergleichen wir dies mit #define.
Häufig gestellte Fragen
Ist die Lektion „const-Variablen“ kostenlos?
Ja — der vollständige Text von „const-Variablen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „const-Variablen“?
Machen Sie Werte schreibgeschützt. Du übst C Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C Academy zu starten?
Keine Vorkenntnisse erforderlich. C Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „const-Variablen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C Academy-Lektion Code schreiben und ausführen?
Ja. Jede C Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.