【发布时间】:2017-11-15 08:14:38
【问题描述】:
我正在尝试在 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 *'
【问题讨论】:
-
你可能分配的内存太少了,你知道的。除非你的例子是写得很糟糕的伪代码。
-
想想你在做什么。如果有 n 个键,那么您将分配 n 个字节。您需要分配 n
struct bucket。提示:需要使用sizeof来计算字节数。 -
@StoryTeller 抱歉忘记包含 arrayOfArrays 的第二个 malloc
-
不,我说的是第一个malloc,其实
-
这绝对不是您遇到的错误。不要发明错误信息。逐字复制粘贴。