在C中实例化结构列表

时间:2011-11-01 19:47:28

标签: 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] = create_lock();

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

lock[2] lock_list;

但它不起作用。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

如果create_lock()返回指向lock的指针,则以下内容应该有效:

lock *lock_list[2];

此外,由于您没有发布,如果您希望在使用时省略typedef部分,则需要struct struct

typedef struct lock lock;

答案 1 :(得分:3)

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

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实例来存储动态大小的锁定列表。