Operationen mit Zeigern
Wir haben bereits gelernt, wie wir Zeigervariablen erstellen und ihnen eine Adresse zuweisen können. Nun wollen wir natürlich auch mit Zeigervariablen arbeiten!
Dereferenzierung
Mittels des Dereferenzierungsoperators * können wir direkt den Inhalt des Speicherbereichs der Variable, auf den die Zeigervariable "zeigt", auslesen und bearbeiten. Dieses Auslesen wird in der Fachsprache Dereferenzierung genannt.
Achtung! Nicht mit dem * bei der Deklaration verwechseln! Dieser macht dem Compiler lediglich kenntlich, dass es sich um eine Zeigervariable handelt.
Schauen wir uns nun nochmal den Code von unserer Zeiger-Eingangsseite genauer an:
#include <stdio.h>
int main() {
int a;
int *b;
int c;
a = 5; b = &a; c = 7; *b = c;
printf("Wert der Variablen a: %d", a);
return 0;
}
Mit der Maus über die einzelnen Codezeilen fahren, um mehr Informationen zu erhalten.
Der Variablen a wird der Wert 5 zugewiesen.
Der Zeigervariablen b wird die Adresse von a zugewiesen. b "zeigt" nun auf a.
Der Variablen c wird der Wert 7 zugewiesen.
Dem Speicherbereich, auf den die Zeigervariable b zeigt, wird der Wert von c zugewiesen. Da b auf den Speicherbereich von a zeigt, bekommt a also den Wert 7 zugewiesen.
Mit einer einfachen printf()-Anweisung wird der Wert von a, also 7, ausgegeben.
Da die Zeigervariable b auf a zeigt, könnten wir mit Hilfe des Dereferenzierungsoperators auch eine äquivalente Ausgabe erzeugen: printf("Wert der Variablen a: %d", *b);
Mit dem Adressoperator & und dem Dereferenzierungsoperator * haben wir nun vielfältige Möglichkeiten zur Verwendung von Zeigervariablen kennengelernt. Anhand eines Codebeispiels zeigen wir einige gültige als auch ungültige Zuweisungen: