【问题标题】:structure member syntax结构成员语法
【发布时间】:2011-03-15 15:32:12
【问题描述】:

我无法访问结构的成员

代码如下:

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 的正确语法是什么?

提前致谢

【问题讨论】:

  • 您的代码包含多个错误,包括:缺少 main() 的参数列表、缺少返回(除非您使用的是 C99 编译器),更重要的是,没有名为 tempb 的变量。请发布实际编译的代码,除非问题是“为什么这段代码不能编译”。
  • 我读得太快了,问题确实是“为什么不能编译”——但你仍然试图访问一个不存在的变量。

标签: c pointers syntax struct


【解决方案1】:

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

【讨论】:

  • 嗨,如果我尝试使用指向 tempb 的指针访问相同的东西会怎样?语法 tempb *tB tB->(*tA)->a 我试过但它不起作用跨度>
  • 然后是(*tempb->tA)->a - 你取消引用 tempb 以访问 tA 成员,从那里开始它和以前一样。如果您愿意,也可以将其写为(*(tempb->tA))->a,但由于在.-> 之后应用了解引用运算符*,因此实际上没有必要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-05
  • 2017-06-11
  • 1970-01-01
相关资源
最近更新 更多