2011-03-15 86 views
0

我无法访问结构的成员结构成员语法

的代码如下:

int main() 
{ 

     typedef struct tempA 
     { 
     int a; 
     }tempa; 


     typedef struct tempB 
     { 
     tempa **tA; 
     }tempb; 

    tempb.(*tA)->a =5; 
    printf("\n Value of a : %d",tempb.(*tA)->a); 

} 

我试着用tempb.(*tA)->a;访问它,但我得到的语法错误:

error: expected identifier before ‘(’ token 

什么是访问int a的正确语法?

在此先感谢

+0

您的代码包含多个错误,包括:缺少main()的参数列表,缺少返回(除非使用C99编译器),更重要的是,没有名为tempb的变量。请发布实际编译的代码,除非问题是“为什么此代码不能编译”。 – DES 2011-03-15 16:56:39

+0

我读得太快了,问题确实是“为什么不能编译” - 但是你仍然试图访问一个不存在的变量。 – DES 2011-03-15 17:03:24

回答

7

正确的语法是(*tempb.tA)->a。您想取消tempb.tA以获取指向tempA的指针,然后取消引用该指针以访问a成员。

+0

谢谢你的工作 – Totie 2011-03-15 15:50:58

+0

嗨,如果我尝试使用tempb指针访问同样的东西会怎么样?tempB * tB tB - >(* tA) - >我尝试过,但不工作 – Totie 2011-03-15 15:58:43

+0

然后它是' (* tempb-> tA) - > a' - 您取消引用tempb访问tA成员,并从此处与之前相同。如果你愿意,你也可以把它写成'(*(tempb-> tA)) - > a',但由于解引用运算符'*'应用在'.'和' - >'后面,所以实际上并不需要。 – 2011-03-15 16:02:48