Problem mit void* und char**
-
struct test { void* value; ... }; struct test* t=malloc(sizeof(struct test));
wie kann ich die Adresse von t->value herausfinden?
ich habe eine function die char** argument verlangt - wie kann ich dann solche addresse passend nach char** konvertieren?
irg. checke ich das nicht ganz...
&((char*)t->value)
klappt ja nicht
oder kann ich dann ganz einfach:
(char**)t->value
schreiben?????? (hab ich da tatsächlich die adresse von t->value?)
-
Die Adresse von t->value in Deinem Beispiel ist gleich t weil void* value erstes Struktur-Mitglied von test ist.
Vorsicht, dabei handelt es sich um einen Zeiger auf einen void-Zeiger der bei Dir z.Z. einen zufälligen Wert beinhaltet.struct test { void* value; char sbla; }; int main() { char** ctest; struct test* t=malloc(sizeof(struct test)); t->value = &t->sbla; ctest = (char**)&t->value; **ctest = 'A'; //char t->sbla ist jetzt 'A' return 0; }
:xmas1: