給出的示例是雙向鏈表的代碼的一部分。 可以說,我有以下兩個給定typedefs的結構。成員使用指針訪問嵌套結構。箭頭運算符相當於
typedef struct dplist dplist_t;
typedef struct dplist_node dplist_node_t;
struct dplist_node {
dplist_node_t * prev, * next;
element_t element;
};
struct dplist {
dplist_node_t * head;
};
而且我在我的主要功能如下代碼:
void main()
{
dplist_t * list;
dplist_node_t *node_one, *node_two;
//the arrow equivalent of the assignment
list->head = node_one;
list->head->next = node_two;
}
我知道node_one分配的「點」相當於是:
(*list).head = node_one;
但是當我嘗試找到node_two賦值的「點」相當於下列所有變體似乎是錯誤的:
(*list).(*head).next = node_two;
(*list).*head.next = node_two;
(*list).head.next = node_two;
有沒有人知道寫這句話的正確方法?
'(*(* list).head).next = node_two;'。 – willys
因爲head指向node_one而node_one是未初始化的指針,所以你應該調用'list-> head-> next = node_two;'來獲得段錯誤。 – Rogus
@羅格斯這僅僅是一個例子,我只是很快寫出來,沒有編譯或者任何東西來顯示問題背後的想法。 – TheAlPaca02