C语言 如何斩动这些结构


struct atom {
  int x;
  int y;
  int z;
  double mass;
};
struct molecule {
  struct atom *member;
  int natoms;
};
struct system {
  struct molecule *fragment;
  int nfrags
};
struct system sys;
sys.nfrags=get_number_of_fragments;
????
该系统有一定数量的分子

,每个分子都有一定数量的原子。我不知道如何分配这些东西。如果我先分配 sys.fragment,似乎 sizeof(分子(是未定义的,因为我还没有定义原子的数量(那么它怎么会有大小?如果我尝试先定义原子的数量,如何指定我错位的片段?

我有函数可以返回任何分子/片段的原子数以及片段数,但卡在从这里开始。

AFAIK sizeof(X( 不能是"undefined"。在这个例子中,sizeof(molecule(被很好地定义为存储一个分子实例所需的内存量:一个原子指针(注意:不是你可以放在这里的任何数组的大小,只是指针的大小(和一个整数。因此,使用第一种方法并首先分配您的 sys.fragment 是完全可以的:

sys.fragment = malloc(sys.nfrag * sizeof(sys.fragment));
sys.fragment = calloc(sys.nfrag, sizeof sys.fragmemt[0]);

sys.fragment = malloc(sys.nfrag * sizeof sys.fragment[0]);

当性能很重要时(但不要忘记检查溢出!

malloc(sizeof(system)) 就这么简单

你基本上有一个:

size = X;
first = malloc(X * sizeof(First));
first->second = malloc( N * sizeof(Second));

等等

相关内容

  • 没有找到相关文章

最新更新