在 C 中实例化结构列表

Fre*_*cer 6 c arrays multithreading struct coding-style

我确定这之前一定有人问过,但我似乎无法在任何地方找到答案。我在头文件中定义了一个结构,如下所示:

struct lock {
    char *name;
    // add what you need here
    void *holder;
    // (don't forget to mark things volatile as needed)
};
Run Code Online (Sandbox Code Playgroud)

我想制作一个锁对象列表。这样我就可以这样说:

lock_list[0] = create_lock();
lock_list[1] = create_lock();
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的方法,但它们都给我错误。我以为我可以简单地说:

lock[2] lock_list;
Run Code Online (Sandbox Code Playgroud)

但它没有用。任何帮助将非常感激。

Tim*_*per 5

如果create_lock()返回指向 a 的指针lock,则应执行以下操作:

lock *lock_list[2];
Run Code Online (Sandbox Code Playgroud)

此外,由于你没有张贴,你需要typedef你的struct,如果你希望能够省略struct使用时部分:

typedef struct lock lock;
Run Code Online (Sandbox Code Playgroud)


Pol*_*ial 5

如果它不是固定大小,您可以生成一个链表:

typedef struct lock_t lock;
typedef struct lockList_t lockList;

struct lock_t {
    char *name;
    void *holder;
}

struct lockList_t {
    lock lock_entry;
    lockList *lock_next;
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用 lockList 的实例来存储动态大小的锁列表。