gpt4 book ai didi

c - 你如何在 C 中创建一个结构数组?

转载 作者:太空狗 更新时间:2023-10-29 16:15:24 25 4
gpt4 key购买 nike

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

我对结构没有太多经验,这就是为什么我决定尝试使用它们而不是一大堆数组。但是,我不断遇到许多不同的错误。我已尝试实现我在各种线程和 StackOverflow 上看到的技术(例如 Array of structs in CC - initialize array of structs ),但并非所有技术都适用。

对于那些已经读到这里的人的更多信息:我不需要这些是动态的,我事先知道/定义所有内容的大小。我还需要它是一个全局数组,因为我正在使用定义了参数的几种不同方法(即 GLUT 方法)访问它。

这就是我在 header 中定义结构的方式:

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.array 的简化形式。这里我初始化了每个结构中的所有变量,只是为了在我以某种方式修改它们之前设置变量:

  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 文件中的空间。

最佳答案

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

这很好用。顺便说一句,你的问题不是很清楚,所以请将你的源代码布局与上面的相匹配。

关于c - 你如何在 C 中创建一个结构数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10468128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com