在C中实例化结构列表

在C中实例化结构列表,c,arrays,multithreading,coding-style,struct,C,Arrays,Multithreading,Coding Style,Struct,我相信这肯定是以前问过的,但我似乎在任何地方都找不到答案。我在头文件中定义了一个结构,如下所示: struct lock { char *name; // add what you need here void *holder; // (don't forget to mark things volatile as needed) }; 我想制作一个锁对象列表。这样我可以说: lock_list[0] = create_lock(); lock_list[1]

我相信这肯定是以前问过的,但我似乎在任何地方都找不到答案。我在头文件中定义了一个结构,如下所示:

struct lock {
    char *name;
    // add what you need here
    void *holder;
    // (don't forget to mark things volatile as needed)
};
我想制作一个锁对象列表。这样我可以说:

lock_list[0] = create_lock();
lock_list[1] = create_lock();
我尝试了不同的方法,但他们都给了我错误。我想我可以简单地说:

lock[2] lock_list;
但它不起作用。任何帮助都将不胜感激。

如果
create_lock()
返回指向
锁的指针,则以下操作应有效:

lock *lock_list[2];

另外,由于您没有发布它,如果您想在使用它时能够省略
struct
部分,则需要
typedef
您的
struct

typedef struct lock lock;

如果不是固定大小,则可以生成链接列表:

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;
}

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

试试lock lock_list[2];或结构锁列表[2];我没有看到typedef。也许他需要
结构锁*lock\u列表[2]
。(或者,可能是
struct lock\u list[2]
,取决于
create\u lock
的返回类型)@Rob Yes我刚刚注意到了这一点。我将尝试“结构锁*锁列表[2]”。Thanx为了快速回复,我会在将来记住这一点,但现在它的长度是恒定的。