我试图在主函数和另一个函数(在另一个文件.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 }};


我从主函数中用类似

PrintFunc(gamer);


函数结构应该是这样的

void PrintFunc(Player p){
//stuff
}


我究竟做错了什么?

最佳答案

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;
}

关于c - 将struct数组传递给函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48858414/

10-11 16:38