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);
我正在尝试在 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);