将结构数组传递给函数

时间:2018-02-19 01:17:15

标签: c function struct

我正在尝试在main和另一个函数(在不同的文件.c)之间传递结构的数据但没有成功。我有这样的结构

struct player{
    char name[10];
    int budget;
};

typedef struct player Player; 

void PrintFunc(Player p); //function prototype

Player gamer[2] = {{"Alice", 100},
                   {"Bob", 100 }};

我用 main func用

之类的东西来调用它
PrintFunc(gamer);

功能结构应该是这样的

void PrintFunc(Player p){
//stuff
}

我做错了什么?

2 个答案:

答案 0 :(得分:2)

gamer是一个数组,PrintFunc需要一个对象。

选项1:

PrintFunc(gamer[0]);
PrintFunc(gamer[1]);

选项2:更改函数以接受指向Player个对象的指针:

void PrintFunc(Player *p, size_t len){
    for(size_t i = 0; i < len; ++i)
        // do something with p[i]
}

int main(void)
{
    Player gamer[2] = {{"Alice", 100},
                   {"Bob", 100 }};

    PrintFunc(gamer, sizeof gamer / sizeof *gamer);
    return 0;
}

答案 1 :(得分:0)

void PrintFunc(Player p[]){ 
    //stuff 
}

发送玩家对象数组时接收玩家对象数组