Sup!
Aaaaalso:
In einem Computer ist Speicher drin.
Der Speicher ist in viele viele Bytes aufgeteilt.
Jedes Byte hat eine Adresse - so wie z.B. ein Haus eine Hausnummer.
Im Speicher liegen Daten. Die Daten brauchen - je nach Typ (String, Zahl von 0 bis 255 oder -32768 bis 32767 oder...) verschieden viel Speicher, d.h. verschieden viele Bytes.
Die Adresse des ersten Bytes, dass ein Stück Daten (z.B. eine 16-Bit-Integer-Zahl) im Speicher belegt, ist die Adresse (z.B. die Adresse der 16-Bit-Integer-Zahl).
Programmiersprachen greifen auf Daten auf verschiedene Arten und Weisen zu. Im Endeffekt werden aber die Bezeichner irgendwie auf Adressen im Speicher abgebildet.
In der Programmiersprache C ist nun ein Zeiger auf etwas einfach eine Variable, die die Adresse eines Stücks Daten enthält.
Z.B. so:
int a = 12345; /* a ist 12345; a liegt irgendwo im Speicher - wo, bestimmt der Compiler - nehmen wir an, die Adresse ist 0xABCD*/
int *b = &a /* b enthält nun die Adresse von a, also 0xABCD; die Adresse von b bestimmt auch der Compiler, nehmen wir an, 0xABDD */
Typ int int* (Zeiger auf int)
Bezeichner: a b
Speicher: 0xABCD .... 0xABDD
Wert 12345 0xABCD
Nun kann man über b, den Zeiger auf a, auf a zugreifen.
Das nennt man auch indirekte Adressierung.
Zeiger kann man z.B. dazu verwenden, call by reference zu realisieren...
Gruesse,
Bio
Never give up, never surrender!!!