Geschrieben von schmoelz am 18.06.2004, 13:26

Zeiger - Pointer

Jede Variable hat nicht nur einen Namen und einen Wert, sondern auch eine Adresse im Speicher. Manchmal ist es besser, eine Variable nicht durch ihren Namen sondern durch ihre Adresse anzusprechen. Um die Adresse einer Variablen zu erhalten, verwendet man den Adressoperator & (kaufmännisches „Und“ - Ampersand). Die Zuweisung

ptr = &i; /* ptr wird die Adresse von i zugewiesen */

speichert die Adresse der Variablen i in der Variablen ptr.
Folgendes Programm druckt den Wert der Variablen j und die Adresse von j:

Beispiel 8.1:

#include<stdio.h>

void main()
{
int j=1;

printf("\nDer Wert der Variablen j ist %d", j);
printf("\nDie Adresse der Variablen j ist %p", &j);
}

Ausgabe:
Der Wert der Variablen j ist 1
Die Adresse der Variablen j ist FFD8

Für die Ausgabe einer Adresse mit Hilfe von printf() wird der Formatbezeichner %p verwendet. Beachte: Der Adressoperator kann nicht auf der linken Seite einer Zuweisung verwendet werden:
&x = 1000; /* illegal - führt z.B. auf Fehlermeldung
Lvalue required in function main */
In der Zuweisung ptr=&j; (j habe den Datentyp int) erhält ptr die Adresse einer Variablen vom Datentyp int. Um die Adresse einer integer-Variablen zu speichern benötigen wir einen neuen Datentyp, einen sogenannten Pointer (Zeiger) auf int. Dieser Datentyp wird mit dem Präfixoperator * deklariert:

int *ptr; /* Deklaration eines Pointers auf int */

Allgemein: Datentyp *Bezeichner;

Bewertung Anzahl
6
50,0 %
1 Bewertungen
3
50,0 %
1 Bewertungen