Zeigerarithmetik:
Addition einer
Konstanten |
|
Beispiel |
|
Das folgende Programm legt drei Variablen (a,b,c) an, und
einen Zeiger auf das erste Byte von a. Wir nehmen an, daß
das erste Byte von a an der Adresse 1004 gelegt wird.
(siehe Bild). Dann wird der Zeiger zeig um 1 erhöht, sodaß
der Zeiger auf das Byte 1008 zeigt. Dann wird der Zeiger
nochmals um 1 erhöht, sodaß er auf Byte 1012 zeigt.
#include <stdio.h>
void main()
{
int a=333000, b=150, c=25000;
int *zeig = &a;
zeig = zeig +1;
zeig = zeig +1;
}
Anstatt zeig= zeig+1 hätte man natürlich auch zeig++
oder zeig += 1 schreiben können.
|
|
Verständnisfrage |
|
Anfänger fragen sich oft, warum der Zeiger um 4Byte
weiterspringt, wenn der Zeiger um 1 erhöht wird.
Genau das ist aber der Unterschied zwischen einer
normalen Variablen und einer Zeigervariablen:
Der Zeiger soll bei Erhöhung um 1 zur nächsten
Variablen springen. Zeigt er gerade auf den
Anfang einer Integervariable, so muß er um
4 Byte weiterspringen, denn eine Integervariable
belegt 4 Byte (bei 32-Bit-Systemen).
|
|