我不是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变量中执行此操作。
答案 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;
}
此处victor
是pointer
到tribute
,因此您需要提供address
myvictor
因此,代码的最后一行中的错误是正确的
在最后一行更改为此内容:myGame.victor=&myVictor
答案 4 :(得分:1)
游戏结构的胜利者是指针。所以你应该分配myVictor的地址。像这样:
myGame.victor = &myVictor;
printf("Points is: %d",myGame.victor->points);