我有一个结构体数组,它是动态分配的。指向这个数组的指针会被传递给其他函数。
struct body{
char* name;
double mass;
// ... some more stuff
};
body *bodies = malloc(Number_of_bodies*sizeof(body));
我需要知道数组的大小,因此我将大小存储在其中一个结构体中,该结构体位于数组的第0个元素(即第一个结构体)。
bodies[0].mass = (double)Number_of_bodies;
然后我会从函数返回一个指向数组第一个元素的指针,即bodies [1]
。
return (bodies+1);
现在,当我在其他函数中使用这个指针时,数据应该从第0个元素开始。
body *new_bodies = (bodies+1); //Just trying to show what happens effectively when i pass to another function
new_bodies[0] = *(bodies+1); //I Think
如果我想查看初始结构体,即在 bodies[0]
处的结构体,那么在其他函数中,我是否必须访问 new_bodies[-1]
?
这是我可以做到的吗? 我如何访问初始结构体?
a[b]
的定义为*(a+b)
。 - Deduplicator