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