私は私がここに= NULLを初期化し、構造体を持っている:エラー:バイナリ式に無効なオペランド
void inicializa(tabelaHash **tabela, int tamanhoTabela) {
int i;
for(i = 0; i < tamanhoTabela; i++) {
inicializaArvore(&tabela[i]);
}
私の問題があれば「と(tabela [i]を==、それが働いていた場合、私がテストしたときに、ということですNULL ")..."私が言及したような関数、または "** tabela"を必要とする他の関数では、うまくいきますが、私の主なことでこのエラーが発生します:
main.c:129:16: error: invalid operands to binary expression ('tabelaHash'
(aka 'struct sbb') and 'void *')
if(tabela[k] == NULL)
~~~~~~~~~^~~~~
このエラーを取得する行だけです:
for (k = 0; k < tamanhoTabela; k++) {
129->if(tabela[k] == NULL)
printf("funcionou");
}
tabelaバイナリツリーのハッシュテーブルであり、tabelaHashは、SBBは、以下のように定義される二分木の一種である(構造体SBBある:
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
}。
私は「tabela [i]を」上の各ツリーのルートを指すポインタを持つようにしたいので、次のように、私はmallocを:
tabelaHash *tabela;
tabela = malloc(tamanhoTabela * sizeof(tabelaHash*));
tabela場合、私はテストするにはどうすればよい[I ]私のメインではまだNULLですか?
編集:私はそれが助けになるかどうか分かりませんが、私は関数に "if(tabela [i] == NULL)"を使うことができます。 "tabelaHash **"。私が "tabelaHash *"を呼び出すと、同じエラーが表示されます。
あなたは本当にあなたの質問で、確かに、あなたの問題の全体像を提示し、またしていないいくつかの互いに素コードの断片を与えてくれました。私たちは一般的に問題を実証し、「改善する/修正する/これをどのように拡張するのか」という質問のコンテキストとして役立つ[mcve]を見ることを好む。あなたはそのようにより良い答えを得るでしょう。 –
'tabelaHash'はどのように定義されていますか? – alk
また、この '... sizeof(tabelaHash *)'は主に間違っている可能性があります。それは '... sizeof(tabelaHash)'またはもっと良い '... sizeof * tabela'でなければなりません。 – alk