error: invalid operands to binary expression
error: invalid operands to binary expression
我有一个结构,我在这里初始化 = NULL:
void inicializa(tabelaHash **tabela, int tamanhoTabela) {
int i;
for(i = 0; i < tamanhoTabela; i++) {
inicializaArvore(&tabela[i]);
}
我的问题是,当我测试它是否有效时,使用 "if(tabela[i] == NULL) ..." 作为我提到的函数或任何其他需要“**tabela”的函数,它工作得很好,但是,当我在 main 上执行此操作时,出现此错误:
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是一个hashtable的二叉树,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
};
我想要一个指针指向 "tabela[i]" 上每棵树的根,所以我 malloc'ed 如下:
tabelaHash *tabela;
tabela = malloc(tamanhoTabela * sizeof(tabelaHash*));
如何测试 tabela[i] 在我的 main 上是否仍然为 NULL?
编辑:我不知道这是否有任何帮助,但我刚刚意识到如果函数调用 "tabelaHash **",我只能在函数上使用 "if(tabela[i] == NULL)"。如果我要求 "tabelaHash *",它会得到同样的错误。
您的 tabela
指针只是一个指针。因此,当您执行 tabela[k]
时,它会在 "array" 个表中获得第 k 个 tabela
。 tabela[k]
的结果因此是 tabelaHash
,它不是指针,因此不能与 NULL 进行原始比较。
您可能想写成 tabelaHash **tabela;
...
我有一个结构,我在这里初始化 = NULL:
void inicializa(tabelaHash **tabela, int tamanhoTabela) {
int i;
for(i = 0; i < tamanhoTabela; i++) {
inicializaArvore(&tabela[i]);
}
我的问题是,当我测试它是否有效时,使用 "if(tabela[i] == NULL) ..." 作为我提到的函数或任何其他需要“**tabela”的函数,它工作得很好,但是,当我在 main 上执行此操作时,出现此错误:
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是一个hashtable的二叉树,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
};
我想要一个指针指向 "tabela[i]" 上每棵树的根,所以我 malloc'ed 如下:
tabelaHash *tabela;
tabela = malloc(tamanhoTabela * sizeof(tabelaHash*));
如何测试 tabela[i] 在我的 main 上是否仍然为 NULL?
编辑:我不知道这是否有任何帮助,但我刚刚意识到如果函数调用 "tabelaHash **",我只能在函数上使用 "if(tabela[i] == NULL)"。如果我要求 "tabelaHash *",它会得到同样的错误。
您的 tabela
指针只是一个指针。因此,当您执行 tabela[k]
时,它会在 "array" 个表中获得第 k 个 tabela
。 tabela[k]
的结果因此是 tabelaHash
,它不是指针,因此不能与 NULL 进行原始比较。
您可能想写成 tabelaHash **tabela;
...