在我的代码中,我得到了这种结构和两个函数:
typedef struct {
char team;
int score;
} Player;
myfunc1 (Player *players) {
players->score = 105;
myfunc(?);
}
myfunc2(?) {
//change again points and team character
}
在main中我创建了一个该结构的数组并将其传递给函数:
int main () {
Player players[2]
myfunc1(players)
}
我开始工作第一个函数,但是我不知道从第一个到第二个函数应该传递什么参数来修改在main中创建的玩家数组[2]。
答案 0 :(得分:3)
您可以再次使用简单指针访问players
:
void myfunc2 (Player *player)
{
players->score = 123;
}
从您myfunc1
这样称呼它:
myfunc2(players);
您实际上会将存储在指针Player* players
中的Player结构(在函数myfunc1
中)传递给函数Player *player
中的本地指针变量myfunc2
。
要修改main
功能中的玩家[1],请按以下方式致电myfunc1
:
int main () {
Player players[2]
myfunc1(&players[1]); // & = give an address to your struct
}
注意数组索引,它们确实从零开始,所以如果yu有一个容量为2的数组(Player players[2]
),那么只有两个有效索引:0
和{{1} }。如果您访问索引,那么您的代码迟早会崩溃。