gpt4 book ai didi

c 中的字符传递参数

转载 作者:行者123 更新时间:2023-11-30 20:05:33 24 4
gpt4 key购买 nike

我正在用 c 语言编写一个游戏,我想在每一步中改变玩家。所以我创建了一个函数来执行此操作。

struct Node{
char player[4];
int cubesRemaining;
struct Node *left;
struct Node *right;
};

char *switchPlayer(struct Node *n){
if (strcmp(n->player, "MAX") == 0){
strcpy(n->player, "MIN");
return (n->player);
}
else{
strcpy(n->player, "MAX");
return (n->player);
}
}

现在我想构建游戏树,并使用递归创建另一个函数。我也使用 switchplayer 功能,但收到错误消息。这是我的代码:

struct Node *buildGameTree(int ncubes, char *player){
struct Node *cube = calloc(1, sizeof(struct Node));
cube->cubesRemaining = ncubes;
strcpy(cube->player, player);

if (cube->cubesRemaining >= 1){
cube->left = buildGameTree(ncubes - 1, switchPlayer(cube->player));
}
if (cube->cubesRemaining >= M){
cube->right = buildGameTree(ncubes - K, switchPlayer(cube->player));
}

return (cube);
}

错误消息是:警告从不兼容的指针类型传递 switchplayer 的参数 1

最佳答案

您创建的函数接收一个struct Node *。在递归中,您传递了错误的参数(char *),因此您可能只需更改为switchPlayer(cube)

如果你进一步允许我观察,你必须处理所有这些递归内存分配(calloc),否则你最终会遇到一个大的内存泄漏漏洞。 :D

关于c 中的字符传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30446712/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com