Zeiger
Manchmal möchten wir wissen, wo eine Variable im Gedächtnis liegt. Ein Zeiger enthält die Adresse einer Variable, die einen spezifischen Wert hat. Wenn man einen Zeiger erklärt, wird ein Sternchen direkt vor dem Zeigernamen gesetzt.
Die Adresse der Gedächtnisposition, in der die Variable gespeichert wird, kann gefunden werden, indem man ein Etzeichen vor dem variablen Namen setzt.
int num; /* Normale Ganzzahlvariable */
int *numPtr; /* Zeiger zu einer Ganzzahlvariable */
Das folgende Beispiel druckt den variablen Wert und die Adresse im Gedächtnis dieser Variable.
printf("The value %d is stored at address %X\n",
num, &num);
Um die Adresse der Variable, die dem Zeiger numPtr zuzuweisen numerisch ist, weist du die Adresse vom variablen zu, numerisch, wie im Beispiel, das zunächst gegeben wird:
numPtr = #
Um herauszufinden was an der Adresse gespeichert wird, die auf durch numPtr gezeigt wird, muß die Variable dereferenziert werden. Das Dereferenzieren wird mit dem Sternchen erzielt, daß der Zeiger mit erklärt wurde.
printf("The value %d is stored at address %X\n",
*numPtr, numPtr);
Alle Variablen in einem Programm liegen im Gedächtnis. Die Aussagen gegeben unterhalb des Antrags, dem die Kompilatorreserve 4 Bytes des Gedächtnisses auf einem Computer mit 32 Bits für die Gleitkommavariable x, dann den Wert 6.5 in es einsetzte.
float x;
x = 6.5;
Während die Adresse Position im Gedächtnis irgendwie der Variable erreicht wird, indem man den Operator setzt u. vor seinem Name folglich &x die Adresse von X.C erlaubt uns, weiter zu gehen ein Stadium und eine Variable zu definieren ist, genannt einen Zeiger, der die Adresse anderer Variablen enthält. Eher können wir sagen, daß Zeiger auf andere Variable zeigt. Z.B.:
float x;
float* px;
x = 6.5;
px = &x;
definiert px, um ein Zeiger zu den Gegenständen der Art Hin- und Herbewegung zu sein, und stellt es gleich der Adresse von X. ein. So bezieht sich *px auf den Wert von x:
|