2010-04-01 117 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