如何在C语言中访问结构体变量中的指针成员?

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变量声明为指针,但我想知道是否可以在普通结构体变量中做到这一点。

哈哈,这让我想起来了... 我几年前学过C语言... 现在为了一个项目又得重新处理它。 - Raven
5个回答

10

尝试:

myGame.victor = &myVictor;

哇啊..我忘记了。谢谢你的回答 :D..我会在检查答案的时间再确认一下。 - Raven

1

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

因此,应该这样写:

myGame.victor = &myVictor;

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是一个指向tributepointer,因此您需要提供myvictoraddress。 所以您代码的最后一行有误,这是正确的:

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


1
游戏结构体的胜利者是指针。因此,您应该分配myVictor的地址。就像这样:
myGame.victor = &myVictor;
printf("Points is: %d",myGame.victor->points);

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接