Vor Zeiger schwitzige Hände...
-
Ich hab Angst,...
...Angst vor Zeigern.
Ich will eine Funktion programmieren, die eine Variable übergeben bekommt und sie dann ändert.
Nun, ich hab bislang nicht gewusst, was Zeigern sind. Hab mir ein paar Tutorials angesehen bzw. durchgelesen. Dort stand drin: "Zeiger sind gefährlich..."
Von kleinen Speicherverlusten bis zu System-Absturz...
Uff,...Könnte mir jemand erklären wie gefährlich wirklich Zeiger sind, oder muss ich mich gar nicht fürchten

Lg Mentras
-
Ich will eine Funktion programmieren, die eine Variable übergeben bekommt und sie dann ändert.
für sowas gibt es in C++ Referenzen!
Von kleinen Speicherverlusten bis zu System-Absturz...
Ein modernes OS stürzt nicht duch speicherzugriffsverletzunge nab.
Es tötet dein Programm, das wars aber auch schon.
-
Wir haben einen recht guten Artikel über Zeiger im Magazin, da steht auch was über Referenzen. Wenn man Zeiger einmal richtig verstanden hat, braucht man sich auch nicht mehr vor ihnen zu fürchten

-
Zeiger sind nicht so schlimm, wie viele es gerne darstellen. Mach dich ruhig schlau in diese Richtung (und am besten auch in Richtung Referenzen). Nach meiner Erfahrung kommt man früher oder später halt einfach mal in die Situation, in der man mit Zeigern arbeiten muss, z.B. weil das SDK, dass man benutzen muss, nunmal darauf aufbaut. Da wäre es blöd, sich nur mit Referenzen auszukennen. Mit Referenzen kann man übrigens auch Blödsinn anstellen.Und vor Semantik-Fehlern schützt dich sowieso keiner.
Im Klartext: man kann selbstverständlich wunderbar funktionierende, sicher laufende Programme mit Zeigern schreiben. Und vor Systemabstürzen brauchst du sicher keine Angst zu haben.Minimal-Zeiger-Call-By-Reference-Beispiel:
void myFunc(int *i) { if(i) { //i enthält die Adresse von myIntVar, du kannst also darauf zeigen *i=1; // der Speicherbereich, auf den i zeigt, wird mit 1 überschrieben } } //Aufruf: int myIntVar; myFunc(&myIntVar); //Adresse der int-Variable übergeben
-
Badestrand schrieb:
Wir haben einen recht guten Artikel über Zeiger im Magazin, da steht auch was über Referenzen. Wenn man Zeiger einmal richtig verstanden hat, braucht man sich auch nicht mehr vor ihnen zu fürchten

Bämm^^ Ziemlich gut erklärt,... sollte an einen Verlag geschickt werden!
Danke für den Link
Hilft mir sehr!Lg Mentras
-
Alt und nicht wirklich didaktisch sinnvoll um Pointer zu lernen, aber immer wieder nett anzugucken:
-
_matze schrieb:
Und vor Semantik-Fehlern schützt dich sowieso keiner.

Jetzt hast du aber ziemlich auf's Was-kenn-ich-nicht-für-tolle-Fremdwörter-Pedal getreten.
Erkläre mir bitte 'Semantik' in diesem Zshg. - ja ich bin zu doof, um das zu verstehen.
-
SeppJ schrieb:
Alt und nicht wirklich didaktisch sinnvoll um Pointer zu lernen, aber immer wieder nett anzugucken:
OMG

Das ist sooooo geil xDDDD
Hat mir aber auch etwas neues erklärt!
Dank dir SeppJ!
€dit: _matze du versüßt mir den Tag
Danke für die Erklärung 
Lg Mentras
-
Mentras schrieb:
Dort stand drin: "Zeiger sind gefährlich..."
Von kleinen Speicherverlusten bis zu System-Absturz...
...bis zu undefiniertem Verhalten und somit auch schwarzen Löchern.

Nein, Zeiger sind eigentlich nur gefährlich, wenn man sie falsch anwendet. Aber im Rahmen von eigenen kleinen Applikationen kann nicht viel passieren. Trotzdem würde ich zuerst die Theorie gut durchlesen, so kann man sich einige Zeit sparen. Nur durch Herumexperimentieren erreicht man nicht viel. Was in dem Video nicht erwähnt wird, ist das Freigeben des Speichers; daran sollte man denken, es sei denn, man mag Memory Leaks.
@ EOP: _matze meinte wahrscheinlich, dass man mit Zeigern/Referenzen genauso auch semantische (von der Bedeutung und Logik des Programms her) Fehler machen kann, also auch ein well-formed-Programm inkorrekt sein kann. Sehr weltbewegend ist das eigentlich nicht.
-
Nexus schrieb:
@ EOP: _matze meinte wahrscheinlich, dass man mit Zeigern/Referenzen genauso auch semantische (von der Bedeutung und Logik des Programms her) Fehler machen kann, also auch ein well-formed-Programm inkorrekt sein kann. Sehr weltbewegend ist das eigentlich nicht.
Auf den Punkt gebracht. Ein fehlerfreies Übersetzen ist auch bei Verwendung von Referenzen kein Garant für ein fehlerfreies Programm. Weiß nicht, was man da verstehen muss.

-
bis zu undefiniertem Verhalten und somit auch schwarzen Löchern.
Eine implementierung eines Compilers, die dann das Pentagon hackt und alle Atomraketen abfeuert wäre völlig Standardkonform... man kann nie wissen...