4 - Systemprogrammierung 1 (SP1) [ID:2475]
50 von 995 angezeigt

Die letzte Woche hatten wir uns mit dem Thema Zeiger beschäftigt und da wollte ich nochmal

so auf die ganz wesentlichen Sachen eingehen, weil es ja doch das zentrale Thema eigentlich

von der Einführung ins Ziel ist.

Also nochmal kurz zusammengefasst, Zeiger sind Referenzen auf irgendwelche Datenobjekte.

Letztendlich, wenn man sich so rein von der Implementierung her betrachtet, sind es ganz

normale Variablen, aber in diesen Variablen stehen nicht normale Werte, mit denen man

halt rechnet oder so, sondern in diesen Variablen stehen die Adressen von irgendwelchen anderen

Variablen oder Strukturen oder irgend so etwas.

Und ich hatte ja dann mal so ein Beispiel gezeigt, dann ein Stückchen Programmcode,

das ist wirklich eine echte, einfach die Hauptspeicheradresse und je nach Architektur ist das halt ein 32- oder

64-Bit-Wert oder auch ein 16-Bit-Wert, natürlich bei irgendwelchen Mikrocontrollern, auch heutzutage

noch, in dem einfach eine Adresse auf dem Speicher steht und an dieser Adresse steht

dann irgendetwas anderes.

So, das ist also die wesentliche Geschichte, wie ein Zeiger implementiert ist.

Was man damit machen kann, ist, im Wesentlichen sind es zwei Dinge.

Mit dem Unteroperator kriegt man überhaupt erst mal die Adresse von irgendeinem Objekt

raus, also wenn ich irgendeine Variable namens x habe, dann kann ich mit und x rausbekommen,

an welcher Stelle die im Speicher liegt und mit dem Sternoperator kann ich dieser Variable

nachlaufen, diesem Zeiger nachlaufen und bekomme die Speicherzelle, auf die der Zeiger zeigt.

Und dann kommt es darauf an, ob dieses Stern x links oder rechts vor einer Zuweisung steht,

wenn es rechts davon steht, dann ist das Ergebnis von diesem Stern x einfach der Inhalt, der

Speicherzelle, auf die dieses x zeigt und wenn es auf der linken Seite vom Zuweisungszeichen

steht, dann wird in diese Speicherzelle, auf die dieser Zeiger zeigt, was reingeschrieben.

Und dann hatte ich nochmal darauf hingewiesen, ein ganz wichtiger Unterschied, den man beachten

muss, ob dieser Sternchenoperator eben im Zusammenhang mit, im Kontext von einer, einer

variablen Definition auftaucht, sowas wie hier dieses integer Stern ip oder ob er in

einer Zuweisung auftaucht, also wenn man es hier nochmal nimmt, das hier oder das hier.

Das, dieser Sternchenoperator hat, ist hier ein wirklicher Operator in einem Ausdruck

und hier ist das Sternchen letztendlich Bestandteil der Typbeschreibung in einer variablen Definition.

Und das sind halt zwei verschiedene Sachen.

Man erlebt es ja an vielen Stellen, dass eben das gleiche Symbol in einem unterschiedlichen

Kontext verschiedene Sachen bedeutet, ja.

Auch wenn man zum Beispiel an das Minuszeichen und das Größerzeichen denkt.

Das Minuszeichen wird im Rahmen von einer Subtraktion verwendet, das Größerzeichen

wird im Rahmen von Ausdrücken, also Vergleichen verwendet und im Rahmen von Struktur zu griffen,

über Zeige auf Strukturen, hat man ja auch dieses p minus Größer, was weiß ich, Name

oder sowas, wo das hier im Endeffekt quasi diese beiden Symbole zusammen, einen Operator

bilden, nämlich den Operator, der den pointert, der referenziert, einerseits und andererseits

dann die entsprechende Strukturkomponente adressiert.

Also insofern ist das eigentlich gar nichts besonders, dass das gleiche Symbol in unterschiedlichem

Kontext verwendet wird.

Bloß gerade bei den Pointern habe ich die Erfahrung gemacht, dass gerade am Anfang

viele Leute da durchaus verwirrt sind, sowas und sowas hier voneinander zu unterscheiden.

Und ich hatte dann das letzte Mal dieses Beispiel durchgemacht, diese Swap-Funktion,

die jetzt hier nochmal kurz kondensiert, mache ich das nochmal.

Also wir haben die Swap-Funktion mit den zwei Integer-Sternparameter, also zwei Pointern

auf Integer als Parameter, die wir hier in den formalen Parametern px und py nennen.

Und wenn wir die Swap-Funktion aufrufen, dann müssen wir zwei Pointer übergeben.

Wir möchten die Variablen a und b vertauschen lassen, d.h. wir müssen die Adressen der

Variablen a und b ermitteln, um Zeige auf Integer zu bekommen, deswegen hier eben die

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

01:27:03 Min

Aufnahmedatum

2012-10-29

Hochgeladen am

2012-11-14 14:11:08

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen