2010-04-01 91 views
2

我有一個結構,它包含名稱和年齡。 我做了這些結構的鏈接列表,以此爲指針:通過指針訪問結構[E]

aNode *rootA; 
在我的主

。 現在我送** rootA的功能,像這樣

addElement(5,"Drew",&rootA); 

,因爲我需要按引用傳遞rootA,這樣我可以在其他功能編輯(在我實際的程序我有兩個根,那麼回報將不工作)

問題是,在我的程序中,我不能說訪問結構成員。

*rootA->age = 4; 

例如不起作用。

希望你們能幫助我。 謝謝!

回答

6

從您的問題中很難分辨出來,但看起來最後一個樣本中的rootA類型是aNode**。如果是這樣,它失敗的原因是->*具有更高的優先級。你需要使用paren來糾正這個問題

(*rootA)->age = 4; 

查看完整的C Operator Precedence Table。如果rootA的類型改爲aNode*。那麼除了使用->之外,您不需要解除引用。而不是僅僅使用->直接

rootA->age = 4; 
+0

哇,這是完美的。謝謝,我不知道它的工作方式。此外,在36秒內得到答案完全正確的是真棒。我必須等待11分鐘才能將其選爲正確答案,哈哈! – Blackbinary 2010-04-01 00:28:56

+0

+1得到非常完整的答案 – 2010-04-01 00:34:26

+0

優先級錯誤是當今編程中的常見錯誤。 – Robert 2010-04-01 01:38:08

0

我懷疑你需要一個指針傳遞給rootA變量,而不是取消引用兩次。

addElement(5,"Drew",&rootA); 
+0

我的複製能力是責怪,固定在問題上。 – Blackbinary 2010-04-01 00:34:28