Bukker Geschrieben 21. November 2002 Geschrieben 21. November 2002 Hi ! Neues Thema in C++ in der Schule ist nun das Thema "Zeiger". Doch wozu sind Zeiger überhaupt gut !? Folgende Aufgabe hat uns unser Lehrer geben: Wir sollten mit Hilfe von Zeigern den Satz des Pytagoras programmieren - war zwar keines wegs schwer nur ich finds unnötig. Was bringt mir denn so ein Zeiger in dieser Aufgabe !? zeiger oder Pointer geben ja den Speicherwert einer Variablen wieder. Wo macht das Sinn !? Zitieren
Darth_Zeus Geschrieben 21. November 2002 Geschrieben 21. November 2002 Originally posted by Bukker zeiger oder Pointer geben ja den Speicherwert einer Variablen wieder. Wo macht das Sinn !? Erst einmal sind Zeiger und Pointer identisch. Depends on your language . Natürlich sind so 'banale' Aufgaben auch ohne Pointer zu lösen, ich denke aber, dass es dem Grundverständniss der Programmierung an sich dient, wenn man nicht gleich mit extrem komplexen Programmstrukturen anfängt. Ausserdem geben Pointer nicht den Inhalt einer Variablen wieder sondern zeigen auf die Adresse einer Variable. Flo Zitieren
Bukker Geschrieben 21. November 2002 Autor Geschrieben 21. November 2002 Ausserdem geben Pointer nicht den Inhalt einer Variablen wieder sondern zeigen auf die Adresse einer Variable. Ja das hab ich ja geschrieben Aber wozu dient das ? Zitieren
Orffi Geschrieben 21. November 2002 Geschrieben 21. November 2002 Es gibt viele sinnvolle Aufgaben, wo man sich das Leben mit Zeigern vereinfachen kann. Ob der Satz des Pythagoras nun dazu zählt, lasse ich jetzt mal dahin gestellt. Aber Du könntest Dir ja mal überlegen, wie Du das folgende Problem lösen würdest: Schreibe eine Funktion, die zwei Variablen vertauscht. Ok, das ist das Standard-Beispiel, aber es zeigt zumindestens einen Aspekt, worum es geht. Wenn man einen Zeiger übergibt, dann kann man das Objekt direkt manipulieren, weil für die Funktion keine Kopie angelegt wurde. Das ist schonmal eine Sache. Die nächste Geschichte wäre, wenn man "optimieren" will. Bei großen Objekten stopft man den Stack, auf dem die Kopie für die Funktion abgelegt wird, ganz schön voll. Das kann man verhindern, in dem man den Zeiger übergibt. Auch muß nicht extra der Copy-Konstruktor aufgerufen werden. Als letztes möchte ich noch dynamische Datenstrukturen anführen: Wenn man zur Compilierzeit nicht weiß, wie viel Speicher belegt wird, dann benutzt man auch Zeiger, die erst zur Laufzeit auf (hoffentlich) korrekt angeforderten Speicher zeigen. Ich bin mir sicher, daß es noch viele, viele weitere Anwendungsmöglichkeiten gibt, aber hier habe ich zumindestens ein paar aufgezählt. HTH Jan Zitieren
gajUli Geschrieben 21. November 2002 Geschrieben 21. November 2002 Hochsprachlich braucht man eigentlich keine Zeiger, wie man z. B. an Java sieht. Da gibt es nur Referenzen. In Wahrheit stecken aber auch hier immer Zeiger dahinter. Sprachen, die auf Zeiger verzichten, rauben aber die Moeglichkeit des absolut unbehinderten Zugriffs auf den Speicher. Manchmal ist dies gewuenscht, aber bei hardwarenaeheren Anwendungen (z. b. Microcontroller), waere das fatal. Man ist also gut beraten, sich mit Zeigern zu beschaeftigen. Sie zeigen einem, wie die Maschinen real arbeiten. Noch eine interessante Sache sind Doppelzeiger, also "Pointer auf Pointer auf Typ", manchmal "Handles" genannt. Damit kann man sehr elegant den Zugriff auf Objekte steuern, deren Orte beweglich sind. Die zugreifende Stelle kann dann ueber einen Zeiger jeweils einen weiteren Zeiger finden, der auf das Objekt weist, und zwar eben immer ueber den gleichen Erst-Zeiger, waehrend die verschiebende Stelle nur den Zweitzeiger aendern darf. Damit hat man eine saubere Trennung, eine Art Schnittstelle. Jemand hat mir mal erzaehlt, dass mit solchen Prinzipien z. B. MMUs arbeiten, um fragmentierte Speicherbereiche wieder zusammenzufuehren. Zitieren
Bukker Geschrieben 21. November 2002 Autor Geschrieben 21. November 2002 Cool, dann sind die ja doch ganz sinnvoll. Ich kam einfach nicht dahinter wo man sie einsetzen könnte, obwohl ich das Thema Zeiger anfürsich gecheckt habe. Na dann werde ich mal lieber in der Schule schön aufpassen *rofl* Thx Leute. *Opti* Zitieren
gajUli Geschrieben 22. November 2002 Geschrieben 22. November 2002 Originally posted by Bukker Cool, dann sind die ja doch ganz sinnvoll. Ich kam einfach nicht dahinter wo man sie einsetzen könnte, obwohl ich das Thema Zeiger anfürsich gecheckt habe. Vorsicht, das koennte eine truegerische Sicherheit sein. Meistens dauert es eine Weile, bis man Zeiger beherrscht statt von Zeigern beherrscht zu werden; Grundverstaendnis ist gerade bei diesen Dingern noch laengst nicht Anwendenkoennen. Zitieren
Bukker Geschrieben 22. November 2002 Autor Geschrieben 22. November 2002 Das stimmt allerdings - klingt einleuchtend naja dann sa´g ichs mal so: ich schau mal wies läuft Zitieren
Gast Redfox Geschrieben 28. November 2002 Geschrieben 28. November 2002 Originally posted by gajUli Vorsicht, das koennte eine truegerische Sicherheit sein. Meistens dauert es eine Weile, bis man Zeiger beherrscht statt von Zeigern beherrscht zu werden; Grundverstaendnis ist gerade bei diesen Dingern noch laengst nicht Anwendenkoennen. Das mit dem von Zeigern beherrscht werden habe ich jetzt hoffentlich überstanden. Langsam hebt sich der Nebel. Ich glaube das es normal ist wenn man am Anfang leichte Verständnisprobleme im Zusammenhang mit Zeigern hat. Deshalb mag ich Java so. Redfox Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.