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

我不是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变量中执行此操作。

尝试:

 myGame.victor = &myVictor; 

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

myGame.victor = &myVictor;

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

所以,它应该是:

 myGame.victor = &myVictor; 
 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所以你需要提供myvictor address所以你的代码的最后一行错误是正确的

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

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

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