Werden Arrays of pointers zuverlässig mit NULL initialisiert?
-
-
Ich glaube, sogar die STL macht Gebrauch von Zeigern?
Oder ist die nicht in C++ geschrieben?
-
Ich denke es war gemeint für's alltägliche Programmieren mit guten Bibliotheken. Natürlich braucht man die zur Implementierung von einigen Datenstrukturen und/oder Algorithmen. War aber zugegeben unglücklich formuliert, und Informatiker nehmen nunmal alles sehr genau
-
@HarteWare mir ging es darum, das wir in C++ nicht mit new und delete hantieren müssen. Damit hab ich mir nämlich am meisten in den Fuß geschossen als ich noch ausschließlich ich mit C zu tun hatte. Gerade wenn man wie ich von C kommt, ist das eine ziemlich befreiende Erkenntnis. Für mich zumindest. Deshalb will ich damit auch nicht mehr viel programmieren müssen. Stichwort: Fehlervermeidung.
-
@daMicha
Ohh Mann ihr nehmt es aber genau hier. Natürlich arbeitet die C++ STL mit Zeigern. Haaach, wie erkläre ich das am besten?Egal welche Programmiersprache: wir arbeiten mit einem binären System.
Die geschlossene Faust bedeutet 0. Der erhobene Mittelfinger bedeutet, das z.B. das Carry-Flag gesetzt ist. Mit dem (C) NULL-Pointer muss ich unter Umständen abfragen, ob der Wert 0 ist oder was anderes und dann erst, welcher Finger nach oben zeigt.
Mit C++ kann ich dieses "Problem" elegant umgehen, weil der nicht erhobene Mittelfinger gar nicht erst auftaucht in meinem Array. Je nachdem.
-
@Belli sagte in Werden Arrays of pointers zuverlässig mit NULL initialisiert?:
Ich glaube, sogar die STL macht Gebrauch von Zeigern?
Oder ist die nicht in C++ geschrieben?Doch. Aber die STL wurde millionenfach getestet und von allen Seiten strapaziert und abgeklopft. Deswegen ist die, nach meinem bisherigen Stand frei von Fehlern.
Wenn man selbst hingeht und mit Zeigern rumwurschtelt, erzeugt man Quellcode, der eben nicht zwangsläufig frei von Fehlern ist. Die Fehlerquote ist allein durch die Nutzung von Zeigern schon erhöht. Abgesehen davon sind Zeiger unpraktischer als Referenzen oder die Instanzen selbst.
-
@It0101 sagte in Werden Arrays of pointers zuverlässig mit NULL initialisiert?:
bla bla bla ...
Die Aussage war:@daMicha sagte in Werden Arrays of pointers zuverlässig mit NULL initialisiert?:
In C++ brauchen wir keine Zeiger.
Und das stimmt SO nicht!
-
@daMicha sagte in Werden Arrays of pointers zuverlässig mit NULL initialisiert?:
Haaach, wie erkläre ich das am besten?
Lass mal lieber ...
@daMicha sagte in Werden Arrays of pointers zuverlässig mit NULL initialisiert?:
Mit C++ kann ich dieses "Problem" elegant umgehen, weil der nicht erhobene Mittelfinger gar nicht erst auftaucht in meinem Array. Je nachdem.
Das hat nichts miteinander zu tun; ob ich nicht initialisierte Werte speichere oder nicht, hängt von den Anforderungen der Anwendung ab. Wenn ich das nicht will, kann ich auch in C ein dynamisches Array benutzen, analog zum C++ vector.
-
@Belli sagte in Werden Arrays of pointers zuverlässig mit NULL initialisiert?:
@It0101 sagte in Werden Arrays of pointers zuverlässig mit NULL initialisiert?:
bla bla bla ...
Die Aussage war:@daMicha sagte in Werden Arrays of pointers zuverlässig mit NULL initialisiert?:
In C++ brauchen wir keine Zeiger.
Und das stimmt SO nicht!
Was er sagen wollte ist: In C++ benötigen wir als Anwender keine Zeiger.
Ich brauche die auch nur in Ausnahmefällen, z.B. wenn ich mit C-basierten APIs arbeite. Aber sonst eigentlich nicht. Kann mich zumindest an keinen Fall erinnern, wo ein roher Zeiger die beste Lösung war.@Belli: fällt dir was ein?
-
Wenn er das sagen wollte, hätte er es ja tun können. Warum soll ich unterstellen, dass er was anderes meint?
Und ich führe hier keine Diskussion darüber, ob ein roher Zeiger die beste Lösung ist. Als ich mit C++ begonnen habe, war er oft die einzige Lösung, deshalb habe ich gelernt, damit umzugehen.
Das schult hervorragend darin, seinen Code vernünftig zu organisieren.Und bitte jetzt nicht behaupten: Belli wollte sagen, dass er rohe Zeiger benutzt - das habe ich nämlich nicht gesagt!
-
@Belli sagte in Werden Arrays of pointers zuverlässig mit NULL initialisiert?:
Wenn er das sagen wollte, hätte er es ja tun können. Warum soll ich unterstellen, dass er was anderes meint?
Das war aber sehr deutlich formuliert von ihm und man muss schon ganz schön pingelig sein, um das nicht zu verstehen.
-
Okay, ich sag meine Meinung auch noch mal deutlich:
Wir brauchen Zeiger in C++.
Warum?
Weil das der Rückgabewert von Funktionen ist, die Speicher bereitstellen. Ohne Zeiger keine dynamische Speicherverwaltung, ohne dynamische Speicherverwaltung kein Vektor, keine Liste, etc.Dass man die Zeiger dann in Smartpointer kapseln kann, ist prima. Aber wenn ich einen Smartpointer will, brauch ich auch erst mal einen Zeiger, was soll der Smartpointer sonst kapseln ...
Ich kann auch nicht sagen, Autos brauchen keine Kolben (die sind ja im Motor gekapselt)
-
Und doch konnte jeder von uns sofort erkennen, dass der Threadersteller kein korrektes C++ macht, und das konnten wir unter anderem daran erkennen, dass er Zeiger so nutzte, wie er sie nutzte.
-
@Belli sagte in Werden Arrays of pointers zuverlässig mit NULL initialisiert?:
Ich kann auch nicht sagen, Autos brauchen keine Kolben (die sind ja im Motor gekapselt)
Wenn du über die Phase des Korinthenkackens hinaus bist, sag Bescheid.
-
@daMicha Ich hab nicht die leiseste Spur einer Ahnung davon was du mir jetzt sagen willst. Bzw. wo der Zusammenhang mit dem ist was ich geschrieben habe.