2017-09-17 10 views
-4

2つの関数があります。 1つはポインタの変換と互換性のない整数int型の式をint型に初期化する[-Wint変換]

struct node* symbol_search (sym_table_t* symTab, const char* name, int* hash, int* index) { 
*hash = symbol_hash(name); 
*index = (int) (*hash % symTab->capacity);...} 

私はプログラムを実行すると、これを受け入れる。しかし、別の機能です。私は検索に電話したいが、彼らは私にハッシュやインデックスを与えていないので、私はこれをした:

symbol_t* symbol_find_by_name (sym_table_t* symTab, const char* name) { 
    int* hash = symbol_hash(name); 
    int* index = *hash % symTab->capacity;...} 

その後、エラーがあります。

答えて

1

機能symbol_hashは、整数へのポインタではなく整数を返します。したがって 、あなたが書く必要があります:あなたの元の関数symbol_search (sym_table_t* symTab, const char* name, int* hash, int* index)はハッシュと呼び出し元にインデックスをバック渡すように思わ

int hash = symbol_hash(name); 
int index = hash % symTab->capacity; 

注意。したがって、呼び出し元は、関数がこの場所に値を書き込むことができるように、ハッシュへのポインタ(すなわちint * hash)を渡さなければなりません。

関連する問題