基本上我正在学习C代码,而且目前正在进行任务,我必须在宇宙中创建一个三维空间,在这个空间中有任意数量的小行星,通过重力进行交互。
此时,我正在尝试使用向量P({1,2,3})设置向量A(body [i] .position),如下所示。虽然代码运行时,它只将向量A的第一个值设置为P的第一个值 - 其余值保持为0。
对VectorSet的调用是在main函数中(以及数组p),我只是把它放在这种格式中以方便。
typedef struct {
double vector[VECTOR_DIM];
} Vector;
typedef struct {
double mass;
Vector position;
Vector velocity;
Vector accel;
float colour[3];
} Object;
p[VECTOR_DIM] = {1,2,3};
VectorSet(&bodies[1].position, p);
void VectorSet(Vector *a, double vec[]) {
int i;
for (i = 0; i < VECTOR_DIM; i++) {
*(double *)(a + 8 * i) = *(double *)(vec + 8 * i);
}
}
答案 0 :(得分:0)
从指针算术中删除8并仅留下i