【发布时间】:2010-03-12 02:30:21
【问题描述】:
您好,我正在尝试使用 C 来实现一个简单的结构:
2个盒子,每个盒子包含不同数量的粒子;在 main() 中传递粒子的确切数量。
我写了以下代码:
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”。