Referenz auf Zeiger vom Typ struct?



  • Hallo erstmal...

    mein C-Codegenerator spuckt etwas aus, das im Prinzip so aussieht:

    struct x{
    int i = 0;
    ... // usw.
    }
    
    x* this;
    
    void f(x*);
    ... // f() definieren
    void g(&x.i);
    ... // g() definieren (siehe unten)
    
    f(this)
    {
     ...
     g(&this->i);
     ...
    }
    

    Wie muß die Funktion g() definiert werden, damit direkt dort hinein geschrieben wird, wo der Zeiger this hinzeigt?

    Adresse auf Zeiger auf struct wird in Funktion g() reingegeben.
    Ich will keine Kopie sondern direkt this.i im Speicher überschreiben.

    Wie würde das gehen? ...

    void g(&(x*) foo)
    {
     foo.i = 5;
     oder
     *foo.i = 5;
     oder (meine Vermutung)
     **foo.i = 5;
    }
    

    Bitte nicht lachen, bin gerade etwas verwirrt 😃
    Danke für die Hülf. ➡



  • struct x{
    int i = 0;
    ... // usw.
    }
    
    // muss ein ptr auf int übergeben werden!!
    void g(int *);
    
    // du kannst hier nicht this also argumenttyp angeben, sondern musst schon sagen, dass f() ein pointer auf eine struktur x bekommt
    f(x * x_ptr)
    {
     ...
     // jetzt kannst du g() aufrufen
     g(&x_ptr->i);
     // alternativ dazu kannst du auch ein
      x_ptr->i = 5;
     // machen ohne dass du g brauchst
     ...
    }
    void g (int * foo)
    {
     *foo = 5;
    }
    

    wenn du typenunabhängig sein willst, musst du erst ein typedef reinmachen, dass den type für x festlegt. dann brauchst du bei g() nicht mehr int * zu schreiben, sondern type_for_i *


Anmelden zum Antworten