Array von Arrays von Strukturen



  • Hallo ich habe folgendes Problem:

    [code]
     struct Sensor gX = {0, 0, 0, 0};
     struct Sensor gY = {0, 1, 0, 0};
     struct Sensor gZ = {0, 2, 0, 0};
     struct Sensor gSensors[3] = {gX, gY, gZ};
     struct Sensor GyroX = {1, 2, 0, 2};
     struct Sensor GyroY = {2, 1, 0, 0};
     struct Sensor GyroZ = {0, 3, 0, 0};
     struct Sensor Gyros[3] = {GyroX, GyroY, GyroZ};
    
     struct Sensor MagnX = {1, 0, 0, 0};
     struct Sensor MagnY = {1, 1, 0, 0};
     struct Sensor MagnZ = {2, 0, 0, 0};
     struct Sensor Magns[3] = {MagnX, MagnY, MagnZ};
    [/code]
    

    Nun würde ich gerne ein Array anlegen, das die Arrays gSensors, Gyros und Magns enthält.

    Wie genau müsste das dann heissen?

    [code]
    struct Sensor sensors[3] = {gSensors, Gyros, Magns}; ?
    [/code]
    

    Wie genau würde ich dann in einer Funktion der ich das Array sensors übergebe, auf die einzelnen Werte zugreifen?

    Vielen Dank für die Hilfe.

    Viele Grüße

    Lisa



  • ungefähr so:

    struct Sensor gX = {0, 0, 0, 0};
     struct Sensor gY = {0, 1, 0, 0};
     struct Sensor gZ = {0, 2, 0, 0};
     struct Sensor *gSensors[] = {&gX, &gY, &gZ};
     ... 
     struct Sensor GyroX = {1, 2, 0, 2};
     struct Sensor GyroY = {2, 1, 0, 0};
     struct Sensor GyroZ = {0, 3, 0, 0};
     struct Sensor *Gyros[] = {&GyroX, &GyroY, &GyroZ}; 
     ...
     struct Sensor **s[] = {gSensors, Gyros, ...};
    

    🙂



  • Danke für die schnelle Antwort, leider bekomme ich es nicht hin, auf die Struktur Komponenten zuzugreifen. Ich programmiere erst seit kurzem und bin wohl etwas überfordert 😞

    Eine weitere Frage wäre, wie kann ich in einer Funktion der ich das Array übergebe feststellen, wie groß es ist? Sollte ich die Größe des Array vor der Übergabe ermitteln und der Funktion mit übergeben oder wäre es stilvoller die Größe in der Struktur zu hinterlegen?

    Liebe Grüße

    Lisa



  • LisaG. schrieb:

    Danke für die schnelle Antwort, leider bekomme ich es nicht hin, auf die Struktur Komponenten zuzugreifen. Ich programmiere erst seit kurzem und bin wohl etwas überfordert

    kopf hoch, das wird schon. hier mal ein beispiel, wie du über diese 1000 indirektionen wieder an deine structs kommst:

    struct Sensor
    {
      int a, b, c, d;
    };
    
    void main()
    {
      // alle objekte
      struct Sensor gX = {1, 2, 3, 4};
      struct Sensor gY = {5, 6, 7, 8};
      struct Sensor gZ = {9, 10, 11, 12};
      struct Sensor GyroX = {13, 14, 15, 16};
      struct Sensor GyroY = {17, 18, 19, 20};
      struct Sensor GyroZ = {21, 22, 23, 24};
    
      // array mit pointern auf ^^diese objekte
      struct Sensor *gSensors[] = {&gX, &gY, &gZ};
      struct Sensor *Gyros[] = {&GyroX, &GyroY, &GyroZ};
    
      // array mit pointern auf ^^dieses pointer-array
      struct Sensor **s[] = {gSensors, Gyros};  
    
      // test: ausgabe
      printf ("%d\n", s[0][0]->a); // gX.a
      printf ("%d\n", s[0][1]->b); // gY.b
      printf ("%d\n", s[0][2]->c); // gZ.c
      printf ("%d\n", s[1][0]->d); // GyroX.d
      printf ("%d\n", s[1][1]->c); // GyroY.c
      printf ("%d\n", s[1][2]->b); // GyroZ.b
    }
    

    LisaG. schrieb:

    Eine weitere Frage wäre, wie kann ich in einer Funktion der ich das Array übergebe feststellen, wie groß es ist? Sollte ich die Größe des Array vor der Übergabe ermitteln und der Funktion mit übergeben oder wäre es stilvoller die Größe in der Struktur zu hinterlegen?

    gib einfach die anzahl der elemente mit. die grösse der struct bekommste mit 'sizeof' aud dem datentyp, also so: sizeof(struct Sensor).
    🙂


Log in to reply