Zeiger
Im Programm werden Variablen, Konstanten und Funktionen mit Ihrem Namen angesprochen. Im Rechner erfolgt der Zugriff allerdings über die Adresse im Speicherplatz. Zeiger verweisen auf diese Adresse im Speicher.
Praktische Anwendungsfälle sind unter anderem:
- Die Übergabe von Datenobjekten
- Die Übergabe von Funktionen als Argument an andere Funktionen
- Die Verwaltung von Speicherbereichen
Weil es sich bei Zeigern um so was wie Variablen handelt, werden diese auch vergleichbar behandelt.
Datentyp *Variablenname;
Der Zeiger muss immer den Datentyp der Variable entsprechen, auf die verwiesen wird. Zeiger werden auch immer mit dem Sternsymbol (*) zwischen Datentyp und dem Name gekennzeichnet. Wo der Stern steht, ist egal, aber empfohlen und weit verbreitet ist die Schreibweise mit einem Leerzeichen nach dem Datentyp, dann das Sternchen und kein Leerzeichen vor dem Namen.
Die Initialisierung erfolgt über das &-Zeichen (Dereferenzierungsoperator).
int zahl = 3;
int *zeiger = &zahl;
Ein Zeiger repräsentiert somit eine Adresse und nicht einen Wert wie eine Variable.
Das Beispiel soll den Unterschied zwischen Zeigern und Variablen deutlich machen:
int zahl = 3;
int *zeiger = &zahl;
printf("Inhalt der Variable: %i\n", zahl);
printf("Adresse der Variable: %p\n", &zahl);
printf("Inhalt vom Zeiger: %p\n", zeiger);
printf("Adresse vom Zeiger: %p\n", &zeiger);
printf("Speicherinhalt worauf der Zeiger zeigt: %i", *zeiger);
Bei der Programmierung mit Zeigern ist besondere Sorgfalt geboten. Wenn Zeiger mit einer nicht gültigen Speicheradresse initialisiert werden, führen diese zu unvorhersehbaren Programmergebnissen. Programmabbrüche wären ein denkbares Szenario.
Weiter mit Die C-Bibliothek