0

エラーが発生し続けます:

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

1 に答える 1

0

型定義を見ると、は、 を受け取ってを返す関数Phash_tableをフィールドとする構造体へのポインタであることがわかります。hash_funcchar *int

ほとんどの場合、次のようにします。

 index = table->hash_func(key);

現状では、「関数へのポインター」を「int」に割り当てようとしていますが、これは必要なものになる可能性が非常に低いです。

于 2012-05-01T22:47:44.597 に答える