![]() Vorherige Seite |
![]() Eine Ebene hoch |
![]() Nächste Seite |
---|
Jede Speicherzelle im Arbeitsspeicher eines Computers hat eine eindeutige Adresse. Eine Information, z.B. der Zahlenwert einer Zahl vom Typ int, wird unter einer Adresse abgelegt, und kann über diese Adresse wieder abgerufen oder verändert werden. Ein Großteil der Handhabung von Adressen läuft für den Programmierer unsichtbar im Hintergrund ab. C bietet aber die Möglichkeit, mit diesen Adressen zu arbeiten.
Wird in C mit einer Adresse gearbeitet, ist sie nicht selbst die Information, sondern die Adresse zeigt auf die Stelle im Speicher, an der die Information steht. Von daher wird in C nicht von Adressen, sondern von Zeigern (engl. pointer) gesprochen.
In der folgenden Tabelle ist ein Ausschnitt eines Speichers dargestellt. (Das Beispiel wurde mit dem Compiler von Borland Version 5.5 auf einem Pentium III Rechner mit Windows ME generiert.) Ab Adresse 01C0 7D04 ist die ganze Zahl 70.000.000 als int gespeichert. Weiter unten im Speicher, ab Adresse 01C4 E358 ist nun die Adresse dieser Zahl selbst im Speicher abgelegt. Hier spricht man von einem Zeiger, der auf die Zahl mit dem Inhalt 70.000.000 zeigt.
Adresse | Datum | Datentyp | Inhalt | Beispiel |
---|---|---|---|---|
... | ||||
01C0 7D04 01C0 7D05 01C0 7D06 01C0 7D07 |
80 1D 2C 04 | int | Zahl 70.000.000 | int n=70.000.000; |
... | ||||
01C4 E358 01C4 E359 01C4 E35A 01C4 E35B |
04 7D C0 01 | Zeiger auf int |
Adresse 01C0 7D04 | int *pn=&n; |
... |
C bietet die Möglichkeit, über diesen Zeiger mit der int-Zahl zu arbeiten. Die folgenden Abschnitte befassen sich mit dieser Technik.