Wie macht man ein Array von Strukturen in C?

Ich versuche, eine Reihe von Strukturen zu erstellen, bei denen jede Struktur einen Himmelskörper darstellt.

Ich habe nicht so viel Erfahrung mit Strukturen, weshalb ich mich entschlossen habe, sie anstelle einer ganzen Reihe von Arrays zu verwenden. Ich stoße jedoch immer wieder auf verschiedene Fehler. Ich habe versucht, die Techniken zu implementieren, die ich in verschiedenen Threads und in StackOverflow gesehen habe (z. B.Array von Strukturen in C undC - Array von Strukturen initialisieren), jedoch waren nicht alle anwendbar.

Weitere Informationen für diejenigen, die bisher gelesen haben: Ich brauche nichts davon, um dynamisch zu sein, ich kenne / definiere die Größe von allem im Voraus. Ich brauche dies auch, um ein globales Array zu sein, da ich in mehreren verschiedenen Methoden, die Argumente definiert haben (d. H. GLUT-Methoden), darauf zugreifen kann.

So definiere ich die Struktur in meinem Header:

<code>struct body
{
    double p[3];//position
    double v[3];//velocity
    double a[3];//acceleration
    double radius;
    double mass;
};
</code>

Ich habe eine Liste anderer globaler Variablen, die ich definiere, bevor ich das Innere der Struktur definiere, und eine davon ist das Array dieser Struktur (im Grunde genommen, wenn ich in meinem beschlagenen Sprechen zu unklar bin, die folgende Zeile) ist über dem Zeug oben):

<code>struct body bodies[n];
</code>

Nur damit Sie wissen,n ist etwas, das ich zu Recht definiert habe (d. h.#define n 1).

Ich verwende dieses Array auf verschiedene Arten, aber das einfachste und platzsparendste ist eine vereinfachte Form meines Mains. Hier initialisiere ich alle Variablen in jeder der Strukturen, nur um die Variablen für bestimmte festzulegen, bevor ich sie auf irgendeine Weise ändere:

<code>  int a, b;
 for(a = 0; a < n; a++)
 {
        for(b = 0; b < 3; b++)
        {
            bodies[a].p[b] = 0;
            bodies[a].v[b] = 0;
            bodies[a].a[b] = 0;
        }
        bodies[a].mass = 0;
        bodies[a].radius = 1.0;
 }
</code>

Der aktuelle Fehler, dem ich gegenüberstehe, istnbody.c:32:13: error: array type has incomplete element type wo Zeile 32 ist, wo ich das Array der Strukturen mache.

Eine letzte Klarstellung, mit Überschrift meine ich den Raum darüberint main(void) aber im selben*.c Datei.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage