Inhalt eines void* Arrays beschreiben??



  • Hi
    Ich habe folgendes Problem ich habe ein Array bestehend aus void*.
    void* array[] = {&var1, &var2};
    ich möchte nun die Inhalte von var1 und var2 beschreiben. Bekomme aber wenn ich
    *array[1] = ...; ein warning: dereferencing 'void*' pointer 😕
    Weiss jemand wie man dies bewerkstelligen kann ?

    MfG Thunder



  • ein void* zeig in den speicher - typenlos.

    dh ein void* hat keine ahnung auf was er zeigt.
    wenn du ihm jetzt dereferenzierst (also *p schreibst) muesste er wissen wieviel bytes er aus dem speicher lesen muss (das weiss er aber nicht) deswegen kann man void* nicht dereferenzieren.

    man schreibst deshalb:
    (int)array[0]=3;

    man castst ihn also auf einen bekannten typen und dereferenziert ihn -> da er dann ein int* ist, weiss er, dass er zB 4 bytes aus dem Speicher holen muss.

    wenn du byteweise arbeiten willst, empfiehlt sich ein char*



  • Vielen dank hast mir damit sehr geholfenn so ähnlich hab ich es mal probiert und mir auch gedacht aber habs wohl falsch gemacht.



  • Hm jetzt habe ich das Problem immernoch wenn ich einer Funktion den Zeiger des arrays übergebe und dann so wie beschrieben mit *(int 😉 drauf zugreife.

    f(array);

    f(void *array) {...}


Anmelden zum Antworten