Doppel Pointer als Parameter.



  • Hallo Leute,

    mein Compiler beschimft mich, weil ich in der Funktion nicht den richtigen Parametertyp verwende:

    warning: passing arg 1 of `function' from incompatible pointer type

    //...
    
    struct StructA
    {
       struct StructB structB;
    };
    
    struct StructB
    {
       int A;
       int B;
       struct structD description;
    };
    
    struct structD description
    {
       unsigned char *a;
       int i;
    };
    
    int main ()
    {
    
       //...
    
       struct StructA structA;
       struct StructC *structC = &structA.structB;
    
       //...
    
       // Prototyp sieht so aus: void function (unsigned char **pcVar);
       //
       function (*(structC->structD.a));
    
       return 0;
    
    }
    
    //...
    

    Wie soll ich richtig die Variable übergeben?

    Danke für die Tipps.



  • Den Fehler habe ich jetzt gesehn. 🤡 Korrektur:

    // Prototyp sieht so aus: void function (unsigned char **pcVar);
       //
       function (&(structC->structD.a));
    
       return 0;
    
    }
    

    Ich möchte auch, dass die Adressen vor der Funktion und in der Funktion gleich sind, nun mache ich was falsch. Die Adresse in der Funktion "function" unterscheidet sich von der Adresse in der "main" Funktion. 😕

    // in main()
     printf ("%p\n", structC->structD.a);
    
     // in function()
     printf ("%p\n", &pcVar);
    


  • shuriko schrieb:

    // in main()
     printf ("%p\n", structC->structD.a);
    
     // in function()
     printf ("%p\n", &pcVar);
    

    So geht's:

    // in main()
     printf ("%p\n", structC->structD.a);
    
     // in function()
     printf ("%p\n", pcVar);
    

    Korrigiert mich bitte, falls ich mich täusche.

    Danke für die Interesse


Anmelden zum Antworten