在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为了快速回复,我会在将来记住这一点,但现在它的长度是恒定的。