Char在c中传递参数

时间:2015-05-25 22:15:23

标签: c

我正在用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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

您定义switchplayer以采用struct Node*类型,但您传递的cube->playerchar *;因此,您传递的是不兼容的指针类型。

您可能只想传递cube而不是{/ 1}},而不是

cube->player