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:


Anmelden zum Antworten