2017-11-15 14 views
-2

ハッシュマップをcで実装しようとしています。私はハッシュとこのようなキーを保持するための構造体を作成することでこれについて行くつもりです。c99の構造体の配列の配列

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 *' 
+0

あなたはおそらく、あなたが知っているだけのようにあまりにも少ないメモリを割り当てています。あなたの例が擬似コードが書かれていない限り。 – StoryTeller

+1

あなたがしていることについて考えてみてください。 n個のキーがある場合は、nバイトを割り当てます。 n 'struct bucket'を割り当てる必要があります。ヒント:バイト数を計算するには 'sizeof'を使う必要があります。 –

+0

@StoryTeller申し訳ありませんが、arrayOfArraysの2番目のmallocを含めるのを忘れました。 – Sean

答えて

0
struct bucket * arrayOfArrays; 
arrayOfArrays[0] = buckets; 

に変更し、これを

それはあなたのために働くはずです。

また、十分なバイトを取得するための最初の割り当てを変更する必要があります。

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