【发布时间】:2016-09-10 08:40:07
【问题描述】:
我有 2 个相互关联的结构。这些组成了一个链表。
typedef struct {
char *text;
int count;
} *Item;
typedef struct node {
Item item;
struct node *next;
} *link;
我正在构建一个查找函数来比较 Item 结构。
link lookup(link head, Item item){
link list;
for(list = head; list != NULL; list = list->next)
if(strcmp(list->item->text, item->text) == 0)
return list;
return NULL;
}
更具体地说,我可以在 if 语句上执行 list->item->text 还是必须执行 (*list).(*item).text ?或者这根本不可能?
【问题讨论】:
-
您正在通过指针引用结构,
->运算符是正确的。 (但是,使用typedef指向指针时要小心(例如typedef struct ... *Item),这可能会掩盖整个代码其余部分的间接级别,使乍一看很难确定)。通常比typedef struct ... Item更好,因此您可以考虑代码本身的间接级别。有些人喜欢 typedef 指向一个指针,就我个人而言,我发现它通常会导致更多的问题而不是它的价值.. -
你是对的,只是
(*list).(*item).text的语法不正确。相反,您需要写(*(*list).item).text
标签: c list pointers struct compare