Was haben "Pointer" bzw. "Zeiger" in einer Programmiersprache eigentlich für einen Sinn?

... komplette Frage anzeigen

3 Antworten

Das ist die einzige Möglichkeit, Variablen dynamisch anzulegen, also erst dann, wenn das Programm schon läuft.

Manchmal weiß man am Anfang noch nicht, ob eine Variable überhaupt gebraucht wird, aber das könnte man noch so regeln, dass man eben mehr Speicherplatz verbraucht.

Viel wichtiger sind Arrays, also viele gleichartige Variablen, die man womöglich noch alle ansprechen können will, ohne für jede einen einzelnen Variablennamen zu haben. Ohne Pointer müsste man z. B. für jeden Bekannten, dessen E-Mail-Adresse man speichern will, einen eigenen Variablennamen einführen. Ebenso Stacks - lokale Variable bei rekursiven Funktionen sind ohne Pointer nicht realisierbar.

Selbst die einfachsten Prozessoren haben (auf Maschinenebene) wenigstens einen Pointer - den Adresszähler, der auf die Speicherzelle zeigt, in der der nächste abzuarbeitende Befehl steht.

Und weil auch die bekannteste abstrakte Maschine - die Turing-Maschine - als ganz wesentlichen Bestandteil einen Zeiger auf die Zelle, die gerade in Bearbeitung ist, hat, und es auch theoretisch keine Maschine geben kann, die mehr kann als eine Turing-Maschine, ist zumindest zu vermuten, dass keine turing-vollständige Programmiersprache ohne Pointer auskommt.

(Was nicht heißt, dass es keine Programmiersprachen wie VB(A), Java, C# gibt, die sich schämen, Pointer zu kennen, und ihre Pointer vor ihren Programmierern so gut wie möglich verstecken. Anmerkung: Das kann nach meinen Erfahrungen zu wunderbar gut versteckten Bugs führen, z. B. wenn man in C# das Schlüsselwort "struct" durch "class" ersetzt, weil man ein Feature braucht, das nur Klassen, aber keine Strukturen bieten. - Pointer sind am Anfang etwas schwerer zu verstehen, aber hinterher weiß man dafür immer, wo man dran ist.)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Burn91
09.04.2016, 11:09

Danke für deine ausführliche Beschreibung. Aber ich bin gerade erst dabei mir ein bisschen das Programmieren beizubringen (bin aber iwie zu blöd dafür ;)). Aber wie ich sehe habe ich noch viel vor mir, den ich hab nicht allzuviel von deinem Text versanden ;)

LG

0

Benötigt man zum Programmieren bestimmter Dinge. In Java gibts keine Pointer aber intern werden da auch Pointer benutzt! ZB für Parameterübergaben per Referenz. Ansonsten braucht man Pointer zB wenn man eine Liste programmieren will.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Burn91
09.04.2016, 09:51

Okay.

Weil ich habe nur ein paar Tutorials gesehen wo ein Wert einer Variable über einen Zeiger ausgegeben wird oder ihr Wert verändert wird. Und dann hab ich mich gefragt wieso das nicht einfach normal ausgegeben oder verändert wird

0
Kommentar von triopasi
09.04.2016, 09:56

Tutorials sind zum Verständnis und haben so meist keinen praktischen Zweck.

0

hinter jedem namen, sei es eine routine, eine schleife, eine funktion, eine variable, steckt immer eine adresse, wo diese eine sache zu finden ist - diese adresse wird pointer genannt

Antwort bewerten Vielen Dank für Deine Bewertung