通过C中的几个函数传递结构?

时间:2013-11-24 11:56:24

标签: c struct

在我的代码中,我得到了这种结构和两个函数:

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]。

1 个答案:

答案 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} }。如果您访问索引,那么您的代码迟早会崩溃。