Zeiger (Pointer)

Was kennzeichnet eine Variable ? VarName, VarTyp, VarWert, VarAdresse !

Beispiel: (int ia=5)

VarName

ia

VarTyp

Integer

VarWert

5

VarAdresse

0x0012FF78

Die Variablenadresse läßt sich auslesen durch Voranstellung eines kaufmännischen-Und Zeichens &. Die Adresse kann in eine Variable speziellen Datentypes ausgelesen werden, den Zeiger. Kennzeichnen Sie Zeiger durch ein vorangestelltes p.

Beispiel: pa=&ia (Der Zeiger wurde bereits deklariert)

Dies ist ein Zeiger der auf den Wert der Variablen zeigt, dessen Adresse ihm zugewiesen wurde.

VarName

ia

Pa

VarTyp

Integer

Zeiger auf Integer

VarWert

5

0x0012FF7C

VarAdresse

0x0012FF7C

0x0012FF78

Zeiger können verwendet werden um auf direkte Weise (über ihre Adresse) den Wert einer Variablen zu ändern. Mit einem vorangestellten Stern (*) kann auf die Adresse zugegriffen werden. Beispiel:

*pa=7;

VarName

ia

Pa

VarTyp

Integer

Zeiger auf Integer

VarWert

7

0x0012FF7C

VarAdresse

0x0012FF7C

0x0012FF78

Dies ändert nichts an dem Zeiger selber sondern nur die Adresse auf die der Zeiger zeigt.

Wie wird ein Zeiger deklariert ?

Zeiger müssen bei ihrer Deklaration immer einem Datentyp zugewiesen werden. D.h. Ein Integer Zeiger kann nur auf eine Integer-Variable zeigen, ein Double-Zeiger nur auf eine Double-Variable etc.

int *pa; /* definiert einen Zeiger auf eine Integervariable */

double *pb /* definiert einen Zeiger auf eine Doublevariable */

Wozu brauchen wir das ?

Sie erhalten mit Zeigern ein mächtiges Mittel um Variablen die beispielsweise in der Main-Funktion verwendet werden, in Funktionen zu verändern.

Beispiel: scanf("%d"&ia);

#include <stdio.h>

void main(void)

{

char ca='a';

char cb='Q';

char *px;

printf("ca hat das Zeichen: %c\n", ca);

printf("und die Adresse: %p\n\n", &ca);

px=&ca;

printf("Der Zeiger pa (auf ca) hat den Wert: %p\n",px);

*px='z';

printf("Und jetzt hat ca das Zeichen: %c\n\n",ca);

px=&cb;

printf("cb hat das Zeichen %c",cb);

printf("Jetzt hat der Zeiger (diesmal auf cb) den Wert: %p\n",px);

printf("Und zeigt im Speicher auf das Zeichen : %c (is ja logisch)\n",*px);

]