我有2個結構相互鏈接。這些形成了一個鏈表。使用指針訪問結構struct struct
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語句列表 - >用品 - >文本或做我必須做的(*列表)。(*項).text區段?或者這是不可能的?
你正在通過指針引用一個結構體,' - >'運算符是正確的。 (但是,要小心使用'typedef'指針(例如'typedef struct ... * Item'),這可以在代碼的其餘部分屏蔽間接級別,使乍一看難以確定)。通常''typedef struct ... Item'最好,以便在代碼本身中考慮到間接級別。有些人喜歡typedef指針,個人而言,我發現它通常會導致更多的問題,而不是它的價值。 –
除了'(* list)。(* item).text'語法不正確之外,你是對的。相反,你需要寫'(*(* list).item).text' –