intarr_result_t intarr_set(intarr_t* ia,
unsigned int index,
int val)
{
if(ia[index] != NULL)
{
index = val;
return INTARR_OK;
}
else if (ia[index] == NULL)
{
return INTARR_BADARRAY;
}
else
{
return INTARR_BADINDEX;
}
}
如果索引有效,此函数应该返回INTARR_OK,并将ia [index]值设置为val。如果ia为空,则返回INTARR_BADARRAY,否则,我将该数组保留为未修改状态并返回INTARR_BADINDEX。但是当我运行此代码时,出现以下错误:对二进制无效的操作数==错误
intarr.c:37:16: error: invalid operands to binary != (have ‘intarr_t’ and ‘void *’)
if(ia[index] != NULL)
^
intarr.c:42:21: error: invalid operands to binary == (have ‘intarr_t’ and ‘void *’)
else if (ia[index] == NULL)
有人知道这个错误的含义吗?
intarr_t的定义:
typedef struct {
int* data;
unsigned int len;
} intarr_t;
这意味着'intarr_t'不是一个指针。发布'intarr_t'的定义。 – chux 2014-11-05 21:10:59
@chux但是在函数参数上,我已经放入了intarr_t *。除非我必须为ia [index] – user3880587 2014-11-05 21:12:28
做别的事情是的,intarr_t *表示ia是intarr_t的数组;所以ia [index]是一个intarr_t,而不是(显然)一个指针。 – 2014-11-05 21:13:38