【问题标题】:How to access pointer members in a Struct variable in C?如何在 C 中访问 Struct 变量中的指针成员?
【发布时间】:2012-10-26 07:26:26
【问题描述】:

我对 C 并不陌生,但我刚刚发现了一个我必须处理的问题。 如何访问作为指向另一个结构的指针的结构成员?

例如

typdef struct {
   int points;
} tribute;

typedef struct {
    int year;
    tribute *victor;
} game;

int main(){
  tribute myVictor;
  myVictor.points = 10;  

  game myGame;
  myGame.year = 1994; // Runs fine
  myGame.victor = myVictor; // I want to point the victor member of the game struct to 
                            //myVictor object... But it gives me an error
} 

我该如何纠正这个问题?我知道我应该将 myGame 变量作为指针.. 但我问我是否可以在普通的结构变量中做到这一点。

【问题讨论】:

  • 哈哈,这让我明白了..我实际上是在几年前学习了 C.. 我现在只是为了一个项目而不得不再次处理它

标签: c data-structures


【解决方案1】:

试试:

myGame.victor = &myVictor;

【讨论】:

  • 哇……我忘了。谢谢你的回答:D.. 一旦检查答案的时间确定,我会检查答案。
【解决方案2】:

这个问题与结构本身无关。您只是试图将数据变量复制到指针中,这是无效的。代替myGame.victor = myVictor;,让myGame.victor 指向 myVictor 的地址。

myGame.victor = &myVictor;

【讨论】:

    【解决方案3】:

    如果你想指向victor成员,你应该传递victor指针(地址,内存方向,...)。

    所以,应该是:

    myGame.victor = &myVictor;
    

    【讨论】:

      【解决方案4】:
      typdef struct {
         int points;
      } tribute;
      
      typedef struct {
          int year;
          tribute *victor;
      } game;
      
      int main(){
        tribute myVictor;
        myVictor.points = 10;  
      
        game myGame;
        myGame.year = 1994; 
        myGame.victor = &myVictor; 
      } 
      

      这里victorpointertribute 所以你需要提供addressmyvictor 所以你代码最后一行的错误是正确的

      在最后一行改成这个:myGame.victor=&myVictor

      【讨论】:

        【解决方案5】:

        游戏结构的胜利者是指针。所以你应该分配 myVictor 的地址。像这样的:

        myGame.victor = &myVictor;
        printf("Points is: %d",myGame.victor->points);
        

        【讨论】:

          猜你喜欢
          • 2021-12-25
          • 2012-03-08
          • 2018-03-06
          • 1970-01-01
          • 2021-12-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-27
          相关资源
          最近更新 更多