Bio: Pointer etc.

Beitrag lesen

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!!!