Version: Test
©Raddy 2001

C-Lehrgang - XI                                          zurück

Zeigerarithmetik:
Subtraktion
zweier
Zeiger
a-absatz.pcx (280 Byte)

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.

c11scp3.pcx (11421 Byte)

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.