c99中结构数组的数组

时间:2017-11-15 08:14:39

标签: c arrays struct 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 *'

1 个答案:

答案 0 :(得分:0)

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