Twitter und Facebook-Anbindung
X
Tweet Follow @twitterapi
!!! Anbindung an twitter und facebook öffnen !!!

Wenn Ihnen mein Online-Buch gefällt,
dann bedanken Sie sich doch mit einer kleinen Spende...

9.1.3 Einfache Beispiele an Bildern erklärt

9.1.3 Einfache Beispiele an Bildern erklärt

Die Figuren "iThomas" und "iTobias" sind normale Variablen und dadurch gekennzeichnet, dass sie ihren Wert in der Hand halten. "pNils" hingegen ist ein Zeiger und dadurch kenntlich gemacht, dass er nichts in der Hand hält, sondern auf etwas zeigt.

 1
 2
 3
					
int iThomas;
int *pNils	= NULL;
int iTobias	= 18;
					

Initialisierung der Variablen und des Zeigers

Hier wurden zunächst zwei normale Integervariablen "iThomas" und "iTobias" definiert, wobei "iTobias" auch gleich einen Wert bekommt. Der Wert von "iThomas" ist erst einmal undefiniert. In Zeile 2, wird jetzt ein Zeiger namens "pNils" erzeugt, welcher zunächst auf nichts zeigt, also "NULL". Die Blöcke neben jeder Figur, sollen ihre Speicheradressen repräsentieren.

 1
					
pNils = &iTobias;
					

Zeiger verweist jetzt auf eine Variable

Hier wurde dem Zeiger "pNils" die Adresse von "iTobias" zugewiesen. "pNils" zeigt von nun an auf "iTobias" und hat also als Wert die Speicheradresse von "iTobias".

 1
					
iThomas = *pNils;
					

Variable bekommt Wert durch Dereferenzierung eines Zeigers

Jetzt möchte "iThomas" gerne den Wert haben, auf welchen "pNils" zeigt. "pNils" fragt jetzt quasi "iTobias" "Was hast du für einen Wert "iTobias"?", worauf "iTobias" ihm ins Ohr flüstert: "18!". Diese Information gibt "pNils" nun an "iThomas" weiter und der neue Wert von "iThomas" ist 18.

 1
					
iThomas = (int)pNils;
					

Vektor aus Pointer Kopieren

Weil "iThomas" neugierig ist, wohin "pNils" zeigt, bzw. sich "iTobias" im Speicher aufhält, fragt er "pNils" "Sag mal, worauf zeigst du eigentlich die ganze Zeit?", worauf ihm "pNils" antwortet: "Na dahin wo "iTobias" im Speicher steht!". Also bekommt "iThomas" als Wert den Vektor von "pNils" und somit die Adresse von "iTobias".

ACHTUNG! "iThomas" ist jetzt kein Zeiger, auch wenn man ihn mit einem "*" benutzten würde (evtl. weißt der Compiler diese Zuweisung sogar ab, da die formalen Typen nicht übereinstimmen). Er hat die Adresse zwar als Wert gespeichert, aber man kann/darf trotzdem keine Dereferenzierung durchführen. Allerdings könnte der Wert von "iThomas" einem neuen Zeiger zugewiesen werden, welcher dann auch auf "iTobias" zeigen würde. Jener Wert könnte z.B. "pJakob" zugewiesen werden und somit würde er auch auf "iTobias" zeigen.

 1
					
*pNils = 7;
					

Wertzuweisung einer Variable über Dereferenzierung eines Zeigers

Hier sagt das Programm "pNils": "Ey du, gib mal deinem Kollegen den Wert 7!", worauf "pNils" folgendes in das Ohr von "iTobias" flüstert: "Nur damit du Bescheid weißt, wenn man dich fragt, dann antworte von jetzt an immer mit 7!".

Zum Seitenanfang
Zum Inhaltsverzeichnis

© Copyright by Thomas Weiß, 2009 - 2012