Zeiger (Pointer)

Zeiger

Wilkommen zum 2 Teil in der Reihe der C Programmierung. In diesem Teil wird sich alles um die sogenannten Zeiger drehen.
Zeiger werden auch pointer genannt. Nun kommen vielleicht Fragen auf. Was ist ein Zeiger/Pointer ? Was kann ich damit machen oder erreichen ? Diese Fragen werde ich nun im folgenden klaeren.

Um ben�tigte Daten waehrend der Ausfuehrung eines Programes zwischenzeitlich abzuspeichern und benutzen zu koennen, benoetigen wir den sogenannten Arbeitsspeicher. Dort sind alle Daten abgelegt die waehrend der Laufzeit eines Programmes gebraucht werden. Dieser ist in kleine Stueckchen unterteilt. Jedes dieser kleinen Stueckchen ist eine Adresse. Das ist noetig um mit einem Program auf bestimmte Adressen springen oder zugreifen zu koennen.

Wollen wir nun z.B. Daten vom Arbeitsspeicher lesen, so benoetigen wir die Adresse wo sich die Daten befinden und den dazugehoerigen Datentyp (siehe [ilink]C_Tutorial_Teil_1:_Datentypen[/ilink]).

Ab jetzt kommen die Zeiger ins Spiel. Was ist ein Zeiger nun genau ? Ein Zeiger (so wie es der Name bereits sagt) zeigt auf etwas. In diesem Fall ist es eine bestimmte Adresse. Die Adresse, auf die der Zeiger zeigt, ist abhaengig davon wo wir ihn \“hin\“ zeigen lassen. In den meisten faellen wird eine Adresse bei der Speicherreservierung automatisch vergeben. Wir koennen diese Adresse aber auch von Hand festlegen (mehr dazu spaeter).

Wann wird nun Speicher reserviert ? Dies geschieht sobald wir einen Datentypen deklariert haben und das Program starten. Der \“Uebersetzer\“ fuer unser Program, wird nun, sofern nichts anderes gewuenscht, den Speicher fuer genau einen Eintrag reservieren. Somit haben wir eine klare Adresse im Arbeitsspeicher und die dort liegenden Daten. Somit koennen wir Daten lesen und veraendern.

Um jetzt Zeiger zu verwenden und mit ihnen zu arbeiten gibt es einige arithmetische Vorschriften. Ich werde sie im Einzelnen nun Erläutern (alle Adressen sind frei gewählt und haben keine nähere Bedeutung).

Zeiger = Zeiger + 1
Dies bedeutet, das Adresse um eine Position nach oben verschoben wird.
Z.B. Die Adresse des Zeigers ist zu Begin 0, dies würde Bedeuten
0=0+1, damit ist die neue Adesse des Zeigers 1 und zeigt auf den Inhalt der dort liegenden Daten.

Zeiger = Zeiger – 1
Dies bedeutet, das Adresse um eine Position nach unten verschoben wird.
Z.B. Die Adresse des Zeigers ist zu Begin 5, dies würde Bedeuten
5=5-1, damit ist die neue Adesse des Zeigers 4 und zeigt auf den Inhalt der Dort liegenden Daten.

Man kann für die Verwendung auch eine allgemeine Vorschrift definieren.

Zeiger = Zeiger (+)(-) Zählwert

Wobei der Zählwert eine ganze Zahl ist um die die Adresse verschoben werden soll. Dabei muss man beachten, das man sich innerhalb eines bestimmten bereiches bewegt. Man kann also die Adresse von einem Zeiger nicht auf -1 setzen, da der Zeiger in diesem Moment \“unterhalb\“ des Arbeitsspeichers zeigen würde.

Desweiteren kann man die Adresse eines Zeigers auch verändern in dem man weitere Operatoren (*)(/) benutzt. Dies sollte aber nur in den aller seltesten fällen geschehen. Adressen die in dem Bereich der Betriebssystemdaten oder dem Bios liegen dürfen wir nicht verändern. Wir können zwar dort hinzeigen lassen aber niemals schreiben. Sollte das aus irgendeinem Grund mal passieren, hätte das zur Folge das unser Program mit einer Fehlermeldung abstürzen würde. Im schlimmsten Fall kann es auch passieren das, das gesamte Betriebsystem nicht mehr lauffähig wäre und wir den Computer neu starten müssten.

Wie man Zeiger nun direkt bei der Programmierung verwendet, folgt im nächsten Teil der Tutorialreihe. Dort werde ich die Bedeutung und Verwendung von sogenannten Variablen erklären.

MFG freakxnet

Schreibe einen Kommentar