Arrays in Structs, an eine Funktion übergeben



  • Hallo erstmal,
    Ich habe einen struct mit in etwa dieser Struktur erzeugt:
    struct gas
    {
    float IonTemp[55];
    float n[55];
    etc...
    }
    danach habe ich Arrays dieses structs erzeugt

    gas z[4];

    ich habe jetzt eine Funktion, welche intern beliebig auf
    z[y].IonTemp[i] (i= 0..54), (y = 0..3) zugreifen soll.
    Wie muß ich den struct an die Funktion übergeben, um auch in der Funktion,
    z[y].IonTemp[i] beliebig ansprechen zu können?

    zum näheren Verständis:

    Function(z[].IonTemp[], z[].IonTemp[], a, b)
    {
    hier muß jetzt je nach angesprochenem z[] und IonTemp[], der jeweilige Wert
    verfügbar sein!
    }



  • Meinst du sowas:

    [code]

    void bremsen (float altestemp[55])
    {
    altestemp[0]=altestemp[0]-5;
    ...
    return;
    }

    int main()
    {
    struct gas
    {
    float temp[55];
    ...
    };
    gas auto;
    bremsen(auto.temp);
    return 0;
    }
    [code]



  • Hi,

    das ist ganz einfach. Du übergibst einen Zeiger auf Deine Struktur.

    z.Bsp.:

    void foo(struct gas *wert){
       wert[1].n[40]=5.7;
    }
    

    aus der main kannst Du dann das ganze einfach mit:

    struct gas z[4];
    
        foo(z);
    

    aufrufen.

    grüße Con@n



  • sicher dass das so klappt?

    müsste es nicht eher so heisen:

    void foo(gas *wert)
    {
    wert->n[40] = 5.7;
    }
    

    und dann in der main

    gas z[4];
    
    foo(z[1]);
    

    auserdem muss vor "struct gas" noch typedef.
    also so:

    typedef struct gas ...
    


  • gibbets2000 schrieb:

    sicher dass das so klappt?

    Ja. Das klappt!

    gibbets2000 schrieb:

    ...
    und dann in der main

    gas z[4];
    
    foo(z[1]);
    

    Ne. In main() muss es dann so aussehen:

    foo(&z[1]);
    

    gibbets2000 schrieb:

    auserdem muss vor "struct gas" noch typedef.
    also so:

    typedef struct gas ...
    

    Warum sollte hier ein typedef hinkommen?!?


Anmelden zum Antworten