void*
-
Was bedeutet syntaktisch dieser Code?
void a(int *b, void*) ;Bin zufällig daruf gestoßen und verstehe bei dieser Funktionsdeklaration das void* nicht.
-
Die Funktion a erwaret einen Zeiger auf einen int und einen Zeiger auf einen beliebigen Typen (eigentlich auf einen leeren Typen, mit Casten kann man aber jeden beliebigen Zeiger dort hinschicken).
Ist eine typische C-Funktion in C++ gibt es Templates dafür.
-
void*ist ein typenloser Zeiger. Dieser enthält eine rohe Speicheradresse, ohne Möglichkeit zur Dereferenzierung oder Zeigerarithmetik. Mittelsstatic_castkannst duvoid*in andere Zeigertypen umwandeln.Was Nathan meint, ist die Abstraktion mittels
void*, sodass eine Funktion auf mehreren Typen arbeiten kann. Sowas wird in C üblicherweise mitvoid*und in C++ mit Templates gelöst. Heisst aber nicht,void*wäre in C++ unnötig, nur ist es relativ selten und wird meist durch typsichere Techniken abgelöst.
-
Also könnte der Datentyp des zweiten Argumentes jeder beliebige Zeiger sein?
-
...