7

我对 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 变量作为指针。但我问我是否可以在普通的结构变量中执行此操作。

4

5 回答 5

10

尝试:

myGame.victor = &myVictor;
于 2012-10-26T07:27:22.803 回答
1

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

myGame.victor = &myVictor;

于 2012-10-26T07:30:45.783 回答
1

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

所以,它应该是:

myGame.victor = &myVictor;
于 2012-10-26T07:31:38.127 回答
1
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; 
} 

victor是一个pointertotribute所以你需要 在你的代码的最后一行提供所以错误是正确addressmyvictor

在最后一行更改为:myGame.victor=&myVictor

于 2012-10-26T07:32:07.407 回答
1

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

myGame.victor = &myVictor;
printf("Points is: %d",myGame.victor->points);
于 2012-10-26T07:34:22.990 回答