2017-09-17 1 views
-4

Ich habe zwei Funktionen. Einer istC- Inkompatible Ganzzahl zur Zeigerkonvertierung Initialisierung von 'int *' mit einem Ausdruck vom Typ 'int' [-Wint-Konvertierung]

Wenn ich das Programm ausführen, akzeptiert dies. Aber in einer anderen Funktion. Ich möchte die Suche nennen und sie geben mir nicht den Hash noch Index, also tat ich dies:

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

Dann ein Fehler vorliegt.

Antwort

1

Die Funktion symbol_hash gibt eine ganze Zahl zurück, keinen Zeiger auf eine ganze Zahl. Daher sollten Sie schreiben: einen Hash zurücklaufen und einen Index für den Anrufer

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

Beachten Sie, dass Ihre symbol_search (sym_table_t* symTab, const char* name, int* hash, int* index) ursprüngliche Funktion scheint. Der Aufrufer muss also einen Zeiger an einen Hash übergeben (d. H. int * hash), so dass die Funktion einen Wert in diesen Bereich schreiben kann.

Verwandte Themen