我正在尝试制作一系列结构,其中每个结构都代表一个天体。
我对结构没有太多的经验,这就是为什么我决定尝试使用它们而不是一堆数组的原因。但是,我不断遇到许多不同的错误。我试图实现,我已经看到了不同的线程和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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
#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;
} 这很好。顺便说一句,您的问题不是很清楚,因此,将源代码的布局与上述内容匹配。