2015-06-25 100 views
0

我有一個包含兩個指針和一個值的結構。這是一個二叉樹。如何malloc一個結構到已經在另一個結構中的指針

struct node 
{ 
    int value;  //holds value of node 
    node *lesschild; //pointer to lesser value child 
    node *greatchild; //pointer to greater value child 
}; 

這種結構是通過在函數指針指向名爲addelement,現在我想malloc是指向指針之一,在原始節點或結構的其他結構,我出現的語法問題,我正在尋求幫助。

這就是我創建lesschild指向的另一個結構,它的結構由ptr指向。

我然後試圖通過雙指針更改新結構中的值。

ptr->lesschild = &malloc(sizeof(struct node)); 
ptr->lesschild->value = add; 

有誰能告訴我我失蹤了什麼嗎?感謝您幫助

+0

爲什麼'lesschild'是一個整數指針而不是節點指針? –

+0

詢問有關錯誤消息的問題。關於讓您困惑的錯誤信息是什麼? – Sebivor

+0

lesschild是一個節點指針,是一個錯字 – couchprogramer

回答

0

你是非常接近,它的:

ptr->lesschild = (node *)malloc(sizeof(struct node)); 
ptr->lesschild->value = add; // assuming add is an int 

malloc已經返回一個指針。我假設當然是lesschild實際上是一個node *,你只是犯了一個錯字。

+0

好吧我試過了,現在我得到一個錯誤,說「無效轉換從'void *'到'節點*'」我應該提到這兩行是在一個函數不會返回任何值。 – couchprogramer

+0

您需要將結果轉換爲'node *',就像錯誤說的那樣。我將它添加到我的答案中。 – Blindy

+3

@couchprogramer停止使用C++編譯器!或者,改變你的標籤,這是一個C++問題。 – Sebivor

相關問題