将结构元素与 c 中的整数进行比较



我正在使用链表。这些是我正在使用的结构:

// List element: a list is a chain of these
typedef struct element
{
int val;
struct element* next;
} element_t;
// List header - keep track of the first and last list elements
typedef struct list
{
element_t* head;
element_t* tail;
} list_t;

我需要做一些类似的事情:

int i = 5;
if(*(list->tail) == i){
//do something;
}

我知道*(list->tail)取消引用指针并返回列表中的最后一个元素,但是我不断收到此错误:

error: invalid operands to binary expression ('element_t' (aka 'struct element') and 'int')
if(*(list->tail) != i){

我意识到将结构与 int 进行比较是无效的。我的问题是:

  1. 为什么比较取消引用的指针不起作用,即使printf("%i",*(list->tail))打印出来?这就是"C"的工作方式吗?

  2. 有没有办法解决这个问题?

我知道这个问题已经在这里得到了回答,但我不太明白他们如何将结构变量与 int 进行比较。 提前谢谢。

错误:二进制表达式的操作数无效("element_t"(又名"结构元素"(和"int"(

此错误意味着您正在尝试将element_tint进行比较,这没有任何意义,因为它们彼此不具有可比性。

为什么比较取消引用的指针不起作用,即使printf("%i",*(list->tail))打印出来?这就是"C"的工作方式吗?

我认为printf("%i",*(list->tail))不应该起作用,因为这会给int带来element_t,这是没有意义的。这两种说法都说得通。

  • printf("%i",list->tail->val);
  • printf("%p",list->tail);

有没有办法解决这个问题?

这不是你想要的吗?

list_t *list;
// ...
if(list->tail->val == i){
//do something;
}

你得到列表的tail,然后你得到tailval

相关内容

  • 没有找到相关文章

最新更新