paar fragen zu zeigern
-
also ich hab schon erfahrung mit klassen und strukturen und beschäftige mich nur wegen gui-bibleotheken mit zeigern!
ich hab da ein paar fragen:
1.) was haben zeiger für vorteile, wozu werden sie verwendet?
2.)int b = 9; int* z; *z = &b; //bsp1 z = b; //bsp2 z = &b; //bsp3
was ist der unterschied zw. oberen bsp.
hoffe ihr könnt mir helfen!
-
Zu 2.)
Bin zwar auch noch relativ neu in C++, aber ich hoffe ich erkläre es richtig:*z = &b // Funktioniert NICHT, Inhalt von z wird Adresse von b zugewiesen z = b // Funktioniert NICHT, Zeiger(Adresse) wird Inhalt von b zugewiesen z = &b // Funktioniert! Zeiger wird Adresse von b zugewiesen
Bye,
Neo
-
Der Unterschied ist das nur das Dritte überhaupt funktioniert. Dort zeigt der Zeiger z auf die Adresse von b.
FAQ:
http://www.c-plusplus.net/forum/viewtopic.php?t=39497
-
funzt ein int *z = &i; funktioniert;
-
Japp, dem Zeiger eine Variablenadresse (&b) bei der Deklaration zuweisen funktioniert auch. Wichtig ist, dass man zwischen der Zeigerdeklaration mit * und dem Inhaltsoperator * unterscheidet.
Bei der Deklaration ist *z immernoch ein Zeiger, dem Adressen zugewiesen werden können. Im Code spricht man dann aber mit *z den Inhalt der Variable, auf die z zeigt an.
-
Man sollte insbesondere darauf achten, nicht auf den Inhalt zuzugreifen, also zu dereferenzieren, falls der Zeiger auf keine gültige Adresse zeigt.
-
gibt es einen wichtigen unterschied zw. bsp1 und bsp2
bsp 1 ==> zeiger gleich adresse von q
bsp 2 ==> inhalt von zeiger gleich qint b = 9; int q = 8; int* z = &b; z = &q;//bsp1 *z = q;//bsp2 cout<<*z<<endl;
-
Genau! In beiden Fällen wird 8 ausgegeben.
Wenn du nur Beispiel 1 im Code stehen hast, zeigt der Zeiger vorher auf b, später dann auf q.
Wenn du nur Beispeil 2 im Code stehen hast, zeigt der Zeiger die ganze Zeit auf b, welches dann mit dem Wert von q überschrieben wird.