Anfängerfrage: Was bedeutet void?

Hallo zusammen,

ich fange gerade an, C++ zu programmieren (Studium) und meine vorliegenden Unterlagen zeigen mir in Beispielen immer wieder Listings, in dem der Ausdruck „void“ vorkommt. Aber nirgendwo eine Erklärung für was dieser steht.

Hat jemand eine einfache Erklärung

  • was void ist?
  • in welchem Zusammenhang man void braucht?
  • und wozu man diesen Ausdruck benötigt?

Das Dumme am Programmierungsrecherche (google & Co.) ist ja, daß das Internet so voll mit Informationen ist, daß man die Nadel im Heuhaufen sucht.

Danke an alle Antworter.

Viele Grüße,
Marco

Hallo Marco,

schau mal hier rein, da solltest du fündig werden, Seite 13 z.B.

http://fbim.fh-regensburg.de/~mav39285/Public/cpp-sk…

Void findest du z.B. bei Funktionen, die keinen Rückgabewert besitzen.

Gruss
Petra

void = kein Typ

also eine Funktion ist ja eigentlich so deklariert

Rückgabetyp Funktionsame (Parametertypen)

wenn jetzt aber garkeine Typen da sind (weder als Parameter noch als Rückgabewert)
dann schreibt man void

also

void Funktionsame(void)

Da einige void’s logisch sind können sie auch oft weggelassen werden.
Also kann man eine Funktion auch
void Funktionsame()
{
]
deklarieren

und da Rückgabe Kein-Typ (also void)
schreiben wir dann beim Aufruf der Funktion nur noch
Funktionsame();

-)

jetzt fragen wir uns dann was void* ist

Ein Zeiger vom Typ void* repräsentiert eine Adresse im Speicher, jedoch ohne den Typ festzulegen. Ein solcher Zeiger heisst daher auch typenloser Zeiger. Beim Speicherzugriff mit einem Typenlosen Zeiger muss der Typ explizit durch einen Cast festgelegt werden.

Hoffe das reicht :smile:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi!

Das ist phantastisch und gibt einen Stern!

Viele Grüße,
Marco

Hallo Petra,

da Skript ist prima und beantwortet nicht nur die VOID-Frage. Danke dafür (und ein Stern).

Viele Grüße,
Marco

Hallo Marco,

  • was void ist?

void kannst du übersetzen mit
leer, nichtig, ungültig, Leere, Lücke.

Die Verwendung wurde ja schon hinreichend erklärt.

MfG Peter(TOO)

Hallo zusammen,

[…]

Hat jemand eine einfache Erklärung

  • was void ist?
  • in welchem Zusammenhang man void braucht?
  • und wozu man diesen Ausdruck benötigt?

Das Dumme am Programmierungsrecherche (google & Co.) ist ja,
daß das Internet so voll mit Informationen ist, daß man die
Nadel im Heuhaufen sucht.

Ich möchte im nachfolgenden ein paar Korrekturen machen.

void = kein Typ

also eine Funktion ist ja eigentlich so deklariert

Rückgabetyp Funktionsame (Parametertypen)

wenn jetzt aber garkeine Typen da sind (weder als Parameter
noch als Rückgabewert)
dann schreibt man void

also

void Funktionsame(void)

Das ist soweit richtig.

Da einige void’s logisch sind können sie auch oft weggelassen
werden.
Also kann man eine Funktion auch
void Funktionsame()
{
]
deklarieren

Das ist falsch wenn wir über C reden. Bei C++ hast du recht.
In C++ ist void func() dasselbe wie void func(void).
In C bedeutet ersteres etwas anders (muss man aber am Anfang nicht verstehen).
Wenn die function keine Argument besitzt, ist es das einfachste immer void func(void) zu benutzen. Dann liegt man sowohl bei C also auch bei C++ richtig.

und da Rückgabe Kein-Typ (also void)
schreiben wir dann beim Aufruf der Funktion nur noch
Funktionsame();

Das ist definitiv falsch, sowohl in C als auch in C++. Der Rückgabewert darf nie weggelassen werden, manche Compiler erlauben das zwar, das aendert aber nichts daran dass es im C/C++ Standard nicht erlaubt ist.

Ältere C Standards hatten dies erlaubt:

func(a) { ... }

Das war aber äquivalent zu

int func(int a) { ... }

Wenn eine Funktion also keinen Rückgabewert, muss void func(irgendwas) geschrieben werden.

jetzt fragen wir uns dann was void* ist

Ein Zeiger vom Typ void* repräsentiert eine Adresse im
Speicher, jedoch ohne den Typ festzulegen. Ein solcher Zeiger
heisst daher auch typenloser Zeiger. Beim Speicherzugriff mit
einem Typenlosen Zeiger muss der Typ explizit durch einen Cast
festgelegt werden.

Hoffe das reicht :smile:

Das ist falsch wenn wir über C reden. Bei C++ hast du recht.
In C++ ist void func() dasselbe wie void

Danke für das differenzieren, aber es ist nicht falsch, sondern nur gültig für C++ , ok.

oben schriebst du auf mein schreiben :
void = kein Typ
also eine Funktion ist ja eigentlich so deklariert
Rückgabetyp Funktionsame (Parametertypen)
wenn jetzt aber garkeine Typen da sind (weder als Parameter
noch als Rückgabewert)
dann schreibt man void
also
void Funktionsame(void)

Das ist soweit richtig.

dann habe ich also im kontext geschlussfolgert , und hier das erklärt
, es sind ale keine typen da, die der programmierer einplant. Er hat also keine die er da expliziet angeben würde.

und da Rückgabe Kein-Typ (also void)
schreiben wir dann beim Aufruf der Funktion nur noch
Funktionsame();

und deswegen ist es richtig.

Es sei denn man ist so negativ wie du heute .

Das ist definitiv falsch, sowohl in C als auch in C++. Der

Moin erstmal,

und nun gehts los ->
Eigentlich wollte ich kommentarlos antworten mit „Du hast recht“
aber er will ja persöhnlich werden . :smile:

Tut mir leid moderator. Ich habs für ganz normale menschen erklärt , im zusammenhang, aber er zerrt 1 teil hier, ein teil dort , und macht daraus ne bildzeitung , mit wissenschaftlichem hintergrund.