Zeigerarithmetik:
Subtraktion
zweier
Zeiger |
|
Beispiel |
|
Nun geht es darum, wie man zwei Zeiger voneinander
subtrahiert. Dabei taucht die Frage auf, welchen Sinn
so eine Operation überhaupt haben könnte.
Im Bild sehen wir, einen Zeiger auf die Integervariable a,
und einen Zeiger auf die Integervariable c.
Die Differenz zeig2 - zeig1 hat den Wert 2, weil man
zeig2 zweimal dekrementieren muß, um auf den zeig1 zu
kommen.
Man beachte, daß die Differenz nicht etwa angibt, um
wieviel Byte die Speicherstellen a und c auseinander liegen,
sondern um wieviel Variablen sie auseinander liegen.
Das folgende Programm bildet die Differnz zweier Zeiger:
#include <stdio.h>
void main()
{
int a=333000, b=150, c=25000;
int *zeig1 = &a;
int *zeig2 = &c;
printf(" %d \n %d \n %d \n", &a,&b,&c);
printf ("%d \n", zeig2-zeig1);
}
|
Das Programm sollte die Speicherstellen von a, b und c
ausgeben, sowie die Differenz 2. Je nachdem, in welcher
Reihenfolge der Compiler die Integervariablen speichert,
kann auch -2 herauskommen.
|
|