Ich habe eine Struktur, welche I = hier NULL initialisiert:Fehler: ungültige Operanden Binärausdruck
void inicializa(tabelaHash **tabela, int tamanhoTabela) {
int i;
for(i = 0; i < tamanhoTabela; i++) {
inicializaArvore(&tabela[i]);
}
Mein Problem ist, dass, wenn ich testen, ob es funktioniert, mit „if (tabela [i] == NULL) ... "auf einer Funktion als die, die ich erwähnte oder andere, die eine" ** Tabela "benötigt, funktioniert es ganz gut, aber, wenn ich es auf meinem Haupt mache, bekommt es mir diesen Fehler:
main.c:129:16: error: invalid operands to binary expression ('tabelaHash'
(aka 'struct sbb') and 'void *')
if(tabela[k] == NULL)
~~~~~~~~~^~~~~
die Linie, die diesen Fehler bekommt gerade:
for (k = 0; k < tamanhoTabela; k++) {
129->if(tabela[k] == NULL)
printf("funcionou");
}
tabela eine Hash-Tabelle von binären Bäumen, tabelaHash ein struct SBB (SBB ist eine Art von Binärbaum wie folgt definiert:
struct sbb {
tipoItem reg; //that is the information it holds
struct sbb *esq; // left pointer
struct sbb *dir; // right pointer
int esquipo; // if it is a vertical or horizontal pointer to the left
int dirtipo; // if it is a vertical or horizontal pointer to the right
};
Ich möchte einen Zeiger haben, die auf dem "tabela [i]" an der Wurzel jedes Baumes Punkte, so dass ich malloc'ed wie folgt:
tabelaHash *tabela;
tabela = malloc(tamanhoTabela * sizeof(tabelaHash*));
Wie kann ich testen, ob tabela [i ] ist immer noch NULL auf meinem Haupt?
edit: Ich weiß nicht, ob das hilft, aber ich habe gerade festgestellt, dass ich das "if (tabela [i] == NULL)" nur für eine Funktion verwenden kann, wenn die Funktion nach a verlangt "tabelaHash **". Wenn ich nach einem "tabelaHash *" rufe, dann bekomme ich denselben Fehler.
Sie haben mehrere disjunkte Codefragmente gegeben, die nicht wirklich ein vollständiges Bild von Ihrem Problem darstellen, noch, in der Tat, Ihrer Frage. Wir ziehen es im Allgemeinen vor, ein [mcve] zu sehen, das das Problem demonstriert und als Kontext für "Wie verbessere/fixiere/erweitere ich dies" -Fragen dient. Sie werden auf diese Weise bessere Antworten bekommen. –
Wie wird 'tabelaHash' definiert? – alk
Auch dieses '... sizeof (tabelaHash *)' ist meistens wahrscheinlich falsch. Es sollte "... sizeof (tabelaHash)" oder besser "... sizeof * tabela" sein. – alk