我正在尝试实现需要这样结构的东西:
struct abc
{
int size;
struct abc *links[size];
}
在这里,我希望 size
在运行时改变,而不仅仅是 abc
的每个实例不同,而且 abc
的实例有不同数量的链接取决于程序。如何为这样的数据结构创建/管理/分配内存?在 C 中甚至可能吗?
最佳答案
最简单的方法是像这样更改结构:
struct abc
{
int size;
struct abc **links;
}
并动态调用数组:
abc.links = (struct abc **)calloc(abc.size, sizeof(void *));
然后你可以这样处理链接数组的元素:
struct abc a,b,c, ...;
int n;
...
a.links = (struct abc **)calloc(a.size, sizeof(void *);
a.links[n] = &b;
struct abc *z = a.links[n];
注意不要尝试访问调用数组边界之外的元素,否则您将遇到内存异常和意外行为。还要记住为每个分配的结构释放(abc.links)以防止内存泄漏......
希望对你有帮助
关于c - 结构中可变大小的自引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8596148/