2016-04-16 11 views
0

我有以下結構(具有一個typedef到結構的指針)>:如何可以寫右邊的代碼*(node_pointer)的線 - N的

typedef struct node_t* Node; 

struct node_t { 
int n; 
Node next; 
}; 

和一個函數中,進出口使用類型節點*以下列方式:

Node* node_pointer; 
Node new_node=malloc(sizeof(*new_node)); 
while(node1!=NULL && node2!=NULL) { 
     node_pointer=((node1->n)>(node2->n) ? &node1, &node2); 
     new_node->n=*(node_pointer)->n; 
     *(node_pointer)=*(node_pointer)->next; 
     new_node->next=malloc(sizeof(*new_node)); 
     new_node=new_node->next; 
} 

,顯然,表達式*(指針 結構的指針) - >字段是非法的。如何在保持簡單的情況下正確書寫它?

+5

'new_node-> N = *(node_pointer) - > N;' - >>'new_node-> N =(* node_pointer) - > N;'(和另外:強烈建議不要隱藏typedefs後面的指針)額外:你malloc()兩次:一次在循環之前,一次在它內部。這對我來說看起來過於複雜;如果循環執行零次會發生什麼? – wildplasser

+0

你試過*((node_pointer) - > n)嗎?你試圖遵從指針(抓住內容),然後指向我相信的結構中的某個東西。 –

+2

'node_pointer =((node1-> n)>(node2-> n)?&node1,&node2);' - >>逗號可能是用作':',而你不需要所有' – wildplasser

回答

-1

PLZ嘗試此代碼: (*nodepointer)-> n

+0

但node_pointer如果來自類型node_t **,而不是node_t * –

+0

對不起,沒有看到它第一次 – maxpovver

相關問題