您的 typedef 有一些问题。假设您使用 MSVC。
声明您在此处拥有的类型的一种简单方法是:
此 typedef 包括 _type {} 类型,*ptype;同时声明类型和指向自定义类型的指针的格式。如果您在 hash_table 中看到向下,则可以使用 pbucket *table,它消除了代码中额外的 ***,并且可以在进行动态分配时提供帮助(帮助您保持头脑清醒,了解分配的内容等。 )。您的原始 typedef,如果您看起来有 typedef struct bucket {} bucket;,您至少需要修改您在指定 typedef 时拥有的两个“桶”名称之一。
如果您使用 C++ 构建设置,您还需要进行转换,如果使用普通 C,您可能不需要转换,所以您的 malloc 行将是(我做了以下 typedef 更改);
hash_table* ht = (phash_table) malloc(sizeof(hash_table)*101);
无论哪种方式,这个片段都应该适合你;
typedef struct _bucket {
char *key;
void *data;
_bucket *next;
} bucket, *pbucket;
typedef struct _hash_table {
size_t size;
pbucket *table;
}hash_table, *phash_table;