Как создать массив структур в C?

Я пытаюсь создать массив структур, где каждая структура представляет небесное тело.

У меня не так много опыта работы со структурами, поэтому я решил попробовать использовать их вместо целой кучи массивов. Тем не менее, я продолжаю сталкиваться с множеством различных ошибок. Я пытался реализовать методы, которые я видел в различных потоках и на StackOverflow (, такие как Массив структур в C и C -инициализация массива структур), однако не все из них были применимы.

Дополнительная информация для тех, кто дочитал до этого места. :Мне не нужно, чтобы все это было динамическим, я заранее знаю/определяю размер всего. Мне также нужно, чтобы это был глобальный массив, так как я обращаюсь к нему несколькими различными методами, которые имеют определенные аргументы (, то есть методы GLUT ).

Вот как я определяю структуру в своем заголовке.:

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

У меня есть список других глобальных переменных, которые я определяю до определения внутренней части структуры, и одна из них — массив этой структуры. (в основном, если я слишком неясен в своих туманных высказываниях, строка ниже находится над тем, что выше):

struct body bodies[n];

Просто чтобы вы знали, nэто то, что я правильно определил (т.е. #define n 1).

Я использую этот массив в нескольких различных методах, но самый простой и наименее занимающий место — это упрощенная форма моего основного. Здесь я инициализирую все переменные в каждой из структур просто для того, чтобы точно установить переменные, прежде чем каким-либо образом их изменить.:

  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;
 }

Текущая ошибка, с которой я сталкиваюсь, nbody.c:32:13: error: array type has incomplete element typeсоздание массива структур.

Последнее уточнение: под заголовком я имею в виду пробел над int main(void), но в том же файле *.c.

89
задан Seanny123 8 March 2019 в 16:34
поделиться