Zum Inhalt springen

Wofür sind Zeiger !?


Bukker

Empfohlene Beiträge

Hi ! :D

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 !?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D .

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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. :D

Redfox

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...