错误:二进制表达式的操作数无效

时间:2016-11-25 19:45:37

标签: c hash binary-tree operands

我有一个结构,我在这里初始化= NULL:

void inicializa(tabelaHash **tabela, int tamanhoTabela) {
    int i;
    for(i = 0; i < tamanhoTabela; i++) {
        inicializaArvore(&tabela[i]);
    }

我的问题是,当我测试它是否有效时,使用&#34; if(tabela [i] == NULL)...&#34;在我提到的功能或任何其他需要&#34; ** tabela&#34;的功能上,它工作正常,但是,当我在我的主机上执行时,它会让我犯这个错误:

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是一个struct 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

};

我希望有一个指针指向&#34; tabela [i]&#34;上的每棵树的根,所以我按照以下方式进行了malloc&#39;如下:

tabelaHash *tabela;
tabela = malloc(tamanhoTabela * sizeof(tabelaHash*));

如何测试tabela [i]在我的主屏幕上是否仍为NULL?

编辑:我不知道这是否有任何帮助,但我刚刚意识到我只能使用&#34; if(tabela [i] == NULL)&#34;如果函数需要&#34; tabelaHash **&#34;,则在函数上。如果我打电话给&#34; tabelaHash *&#34;,那就会给我带来同样的错误。

1 个答案:

答案 0 :(得分:1)

您的tabela指针只是一个指针。因此,当您执行tabela[k]时,它会在&#34;数组&#34;中得到第k个tabela。的表格。 tabela[k]的结果因此是tabelaHash,它不是指针,因此不能与NULL进行比较。

您可能想要编写tabelaHash **tabela;而不是......

相关问题