如何在C中的Struct变量中访问指针成员?

时间:2012-10-26 07:26:27

标签: c data-structures

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

5 个答案:

答案 0 :(得分:8)

尝试:

myGame.victor = &myVictor;

答案 1 :(得分:1)

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

myGame.victor = &myVictor;

答案 2 :(得分:1)

如果要指向胜利者成员,则应该传递胜利者指针(地址,记忆方向......)。

所以,它应该是:

myGame.victor = &myVictor;

答案 3 :(得分: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; 
} 

此处victorpointertribute,因此您需要提供address myvictor 因此,代码的最后一行中的错误是正确的

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

答案 4 :(得分:1)

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

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