gpt4 book ai didi

c - 将结构放入 C 中的数组元素中

转载 作者:太空宇宙 更新时间:2023-11-04 06:31:09 25 4
gpt4 key购买 nike

我有一些代码(我已经简化了一点):

# define NUMBER_OF_PARTICLES 1

typedef struct {
Axes velocity; // struct with x,y,z floats
} Particle;

Particle * array_of_particles;

Particle create(Particle p) {
p.velocity.x = 0.0f;
p.velocity.y = 0.0f;
p.velocity.z = 0.0f;

return p;
}

void create_particles() {
array_of_particles = (Particle *) malloc(sizeof(Particle) * NUMBER_OF_PARTICLES);

int p;
for (p = 0; p < NUMBER_OF_PARTICLES; p++) {
Particle current_particle = array_of_particles[p];
array_of_particles[p] = create(current_particle);
}
}

希望您能看到我正在尝试使索引 p 处的数组元素成为 current_particle 的结构。我想我误解了如何执行此操作,因为它在我打印 array_of_particles[p] 时返回 0。有人可以指导我实现这一目标的正确方法吗?

最佳答案

尝试

void create_particles() 
{
array_of_particles
= (Particle *) malloc(sizeof(Particle)*NUMBER_OF_PARTICLES);

int p;
for (p = 0; p < NUMBER_OF_PARTICLES; p++) {
Particle* current_particle = array_of_particles + p;
create(current_particle);
}
}

和改变

void create(Particle* p) 
{
p->velocity.x = 0.0f;
p->velocity.y = 0.0f;
p->velocity.z = 0.0f;
}

您所做的是将参数的副本传递给函数,这样更改就不会离开函数。

也不需要返回粒子然后复制它,您已经将结构传递给函数,因此您可以使用参数“p”修改它。

关于c - 将结构放入 C 中的数组元素中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20398943/

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