c99 中结构数组的数组

Array of Array of structs in c99

我正在尝试在 c 中实现哈希映射。我正在尝试通过创建一个结构来保存散列和密钥来解决这个问题。

struct bucket{
char * key;
char * value;
};

然后我将创建这些结构的数组来保存所有相同但具有不同键的散列。像这样:

struct bucket * buckets;
buckets = malloc(numberOfBuckets);

然后我被卡住的地方是制作一个数组来存储这些数组。我认为它是这样完成的:

struct bucket * arrayOfArrays;
arrayOfArrays = malloc(++numberOfKeys);
arrayOfArrays[0] = buckets;

这是给我的错误:

incompatible types when assigning to type 'struct bucket' from type 'struct bucket *'
struct bucket * arrayOfArrays;
arrayOfArrays[0] = buckets;

将此更改为

struct bucket ** arrayOfArrays;
arrayOfArrays = malloc(sizeof(struct bucket *) * numberOfArrays);
arrayOfArrays[0] = buckets;

它应该适合你。

您还需要更改第一个分配以获得足够的字节数:

struct bucket * buckets;
buckets = malloc(sizeof(struct bucket) * numberOfBuckets);