c - 如何表示一个指向多个对象的容器?

标签 c pointers

假设我们有以下内容:

struct main_container{
   struct sub_container* pointers;
}

struct object{
   char* name;
}

struct sub_container{
   //?
}

这个想法是 main_containerpointers 应该指向多个 object,但我不知道该放什么在sub_container中。我在想类似 struct object** o; 的东西,但似乎我必须为此分配新的内存,而我想做的只是指向内存中已存在的多个对象。因此,假设内存中存在 10 个对象,并且指针保存指向 4 个随机对象或 6 个随机对象的指针。有什么办法可以实现这一点吗?

最佳答案

需要指向对象的指针吗?然后只需添加它:

struct sub_container{
    struct object * ptr;
}

您可以将其分配为:

struct main_container mc;
mc.pointers = malloc(20 * sizeof(*mc.pointers)); // Remember to check in real code if malloc fails
struct object obj;
mc.pointers[0].ptr = &obj; // Assign external object to container

但是你需要sub_container吗?如果它所做的只是保留一个指针,那么您可以摆脱它:

struct main_container{
    struct object** pointers;
}

和:

...
mc.pointers[0] = &obj;

关于c - 如何表示一个指向多个对象的容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25520086/

相关文章:

c - 将二维数组 char 传递给函数

c++ - 我可以使用 NULL 代替 0 的值吗?

c - 错误 : request for member xxxxxx in something not a structure or union

c - 指针在函数外部获取垃圾值,但在函数内部获取常规值

c - linux中汇编和C的混合编程

c - 如何测试零是否已更改为一(而不是相反)

c - 为什么 bsearch 返回 void *?

c - 海湾合作委员会-错误 : dereferencing pointer to incomplete type

c - DevC++ 中未声明“Node”(在此函数中首次使用)

c++ - C 中 wstring 的等价物