def. datentyp "void"
-
hallo c++ cracks,
bin absoluter anfänger bei programmiersprachen. habe ein verständnisproblem mit dem oben angeführten datentyp, was den ein oder anderen, oder alle waherscheinlich langweilen wird...
kann mir jemand in einfachem deutsch erklären wofür void gut ist? ich meine klar, bei void erwartet man keinen wert zurück, oder...? super!besten dank
j
-
du hast es doch selbst beantwortet, man bekommt nichts zurückgeliefert, sprich kein return.
bei vielen sachen ist es nicht sinnig, etwas zurückzugeben. wenn man zum beispiel eine funktion hat, die den ram leerräumt und tätigkeiten ausführt, bei denen es einfach keine unterschiedlichen ergebnisse gibt, dann braucht man es nicht. alles andere ist eben ausgeschlossen
-
Ja genau das void ist eben nichts. z.B. wenn die Funktion nur etwas in eine Datei, Datenbank oder sonstwas speichert, was soll sie dann biette zurückliefern?
(Falls du jetzt auf die Rückgabe eines möglicherweise auftretenden Fehlers kommst: Das macht man mit Exceptions (deutsch: Ausahmen).)
-
Da war wieder einer schneller.
-
void bedeutet, wie bereits gesagt, nichts, denoch ein Type. In Mathe bedeutet 0 auch nichts, denoch ist es eine Zahl. Dies bringt aber auch mit sich, dass man nicht alles was man mit einer Zahl machen kann auch mit 0 tun kann (zb durch 0 teilen). Genauso ist es mit void. void ist ein Type der "nichts" bedeutet und, genau wie in der Mathe, auch nicht überall eingesetzt werden kann.
Es ist zb nicht möglich eine Variable aus nichts zu erstellen. Allerdings ist zb möglich nichts zurück zu geben:
void foo(){ } void bar(){ return; //return das "nichts" zurückgibt };
Ähnlich ist es bei Zeigern, du kannst auf "nichts" zeigen (das heist frei in die Landschaft) allerdings wenn du auf nichts zeigst kannst du auch nichts mit dem worauf du zeigst anfangen, es ist ja nichts. Du musst erst per cast definiren auf du zeigsts. Hierbei ist es ein wenig wie mit abstrakter Malerei, jeder erkennt was anderes deshalb ist es wichtig sich irgendwie zu merken auf was du zeigst. Wer aber frei in die Landschaft zeigt weis das im Prinizip nicht und deshalb sollte man void Zeigern aus dem Weg gehen.
Kurz gefasst:
-void kann return Type sein
-void kann Zeiger sein
-
Irgendwer schrieb:
[...]Wer aber frei in die Landschaft zeigt weis das im Prinizip nicht und deshalb sollte man void Zeigern aus dem Weg gehen.
Void ist aber die einzige Möglichkeit in C zu vermeiden, dass man eine Datenstruktur/Algorithmus für 10verschiedene Typen schreiben muss.
Also unsinnig ist er auf keinen Fall auch in C++ muss man ihn hin und wieder einmal verwenden und sei es nur, weil man mit C-APIs arbeitet.
-
Irgendwer schrieb:
Es ist zb nicht möglich eine Variable aus nichts zu erstellen. Allerdings ist zb möglich nichts zurück zu geben:
void foo(){ } void bar(){ return; //return das "nichts" zurückgibt };
Man kann sogar
void bar() { return foo(); }
schreiben
[Hoffentlich hab ich nicht zur Verwirrung beigetragen.]
-
Bashar schrieb:
Man kann sogar
void bar() { return foo(); }
schreiben
[Hoffentlich hab ich nicht zur Verwirrung beigetragen.]
Wer das nicht auf den ersten Blick erkennt soll void mal in Gedanken mit der Mathe 0 ersetzen und schon ist alles klar.
-
Das ist zwar Ansichtssache, aber C++ ist eh nicht auf mathematisch-logischen Prinzipien aufgebaut (im Ggs. zu einigen funktionalen Sprachen). void-Ausdrücke in return-Anweisungen wurden erst recht spät in C++ eingeführt, in C gibt es die gar nicht.
BTW würd ich void nicht mit 0, sondern mit der leeren Menge vergleichen.