gpt4 book ai didi

无法编译哈希表 ADT - C

转载 作者:行者123 更新时间:2023-11-30 18:00:34 25 4
gpt4 key购买 nike

我不断收到错误:

  1. 赋值从指针生成整数,无需强制转换

当尝试使用以下命令编译我的哈希表 ADT 时:

gcc hash_NEW.c -c

在较大的 .c 文件的 1 个函数中遇到该错误。感谢您提前的帮助

错误 1 ​​发生在 (index = table->hash_func;) 行

void insert_hash(Phash_table table, char *key, void *data){
Phash_entry new; //pointer to a new node of type hash_entry
int index;

new = (Phash_entry)malloc(sizeof(hash_entry));
new->key = (char *)malloc(sizeof(char)*strlen(key)); //creates the key array based on the length of the string-based key
new->data = data; //stores the user's data into the node
strcpy(new->key,key); //copies the key into the node

//calling the hash function in the user's program
index = table->hash_func; //index will hold the hash table value for where the new
table->buckets[index] = new; //Assigns the pointer at the index value to the new node
table->total++; //increment the total (total # of buckets)
}

头文件部分:

typedef struct hash_table_ {
hash_entry **buckets; //Pointer to a pointer to a Linked List of type hash_entry
int (*hash_func)(char *);
int (*cmp_func)(void *, void *);
int size;
void **sorted_array; //Array used to sort each hash entry
int index;//=0
int total; //=0
int sort_num; //=0
} hash_table, *Phash_table;

最佳答案

查看类型定义,您可以看到Phash_table是一个指向结构体的指针,其字段 hash_func是一个采用 char * 的函数并返回 int .

您最可能想要的是:

 index = table->hash_func(key);

就目前情况而言,您正在尝试将“指向函数的指针”分配给“int”,这不太可能是您所需要的。

关于无法编译哈希表 ADT - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10405337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com