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.
a = 5;
Der Variablen a wird der Wert 5 zugewiesen.
b = &a;
Der Zeigervariablen b wird die Adresse von a zugewiesen. b "zeigt" nun auf a.
c = 7;
Der Variablen c wird der Wert 7 zugewiesen.
*b = c;
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.
printf("Wert der Variablen a: %d", a);
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:

Video

Stanford: Binky Pointer Fun Video

Interaktiv

C Programming Quiz: Pointers

Literatur

C-HowTo: Zeiger - Speicher
Stanford: Pointer Basics