我有一些类似的代码(我简化了一点):
# 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);
}
}
希望您能看到我正在尝试使index处的数组元素p
成为的结构current_particle
。我认为我误会了该如何做,因为它0
在我打印时会返回array_of_particles[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;
create(current_particle);
}
}
并改变
void create(Particle* p)
{
p->velocity.x = 0.0f;
p->velocity.y = 0.0f;
p->velocity.z = 0.0f;
}
您要做的是将参数的副本传递给函数,以便所做的更改永远不会离开函数。
也不需要返回粒子然后再将其复制,您已经将结构传递给函数,因此可以使用参数'p'对其进行修改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句