开发者社区 问答 正文

您如何在C中制作结构数组?

我正在尝试制作一系列结构,其中每个结构都代表一个天体。

我对结构没有太多的经验,这就是为什么我决定尝试使用它们而不是一堆数组的原因。但是,我不断遇到许多不同的错误。我试图实现,我已经看到了不同的线程和StackOverflow上的技术(比如在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)。

我以几种不同的方法使用此数组,但是最简单,最不占用空间的一种是我的main的简化形式。在这里,我初始化每个结构中的所有变量,只是在以某种方式修改它们之前设置某些变量:

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在第32行构造结构数组的位置。

最后一个澄清,通过标题,我是指上面的空格,int main(void)但在同一*.c文件中。 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 13:43:05 408 分享 版权
1 条回答
写回答
取消 提交回答
  • #include<stdio.h> #define n 3 struct body { double p[3];//position double v[3];//velocity double a[3];//acceleration double radius; double mass; };

    struct body bodies[n];

    int main() { 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; }

    return 0;
    

    } 这很好。顺便说一句,您的问题不是很清楚,因此,将源代码的布局与上述内容匹配。

    2020-02-08 13:43:18
    赞同 展开评论
问答地址: