Привет я пытаюсь использовать C для реализации простой структуры:
2 коробки, каждая содержит различное количество частиц; точное число частиц передается в main().гибкая длина struct array внутри другой структуры с использованием C
Я написал следующий код:
typedef struct Particle{
float x;
float y;
float vx;
float vy;
}Particle;
typedef struct Box{
Particle p[];
}Box;
void make_box(Box *box, int number_of_particles);
int main(){
Box b1, b2;
make_box(&b1, 5); //create a box containing 5 particles
make_box(&b2, 10); //create a box containing 10 particles
}
Я пытался реализовать make_box со следующим кодом
void make_box(struct Box *box, int no_of_particles){
Particle po[no_of_particles];
po[0].x = 1;
po[1].x = 2;
//so on and so forth...
box->p = po;
}
Это всегда дает мне «неправильное использование гибкого элемента массива». Очень ценим, если кто-то может пролить свет на это.
Если я правильно помню, C не позволяет использовать переменную для размера массива. –
C99 делает. Он называется * массивами переменной длины * или VLA. C99 также благословил «struct hack», представив «гибкий элемент массива». –