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. Mittels static_cast kannst du void* 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 mit void* 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?



  • ...


Anmelden zum Antworten