C 从枚举到枚举的分配不兼容*
我的代码出现以下错误:C 从枚举到枚举的分配不兼容*,c,pointers,enums,C,Pointers,Enums,我的代码出现以下错误: 从类型enum cell*分配给类型enum cell时不兼容的类型 我尝试了很多方法来修复它,但都没有成功。这是我的代码: BOOLEAN init_first_player(struct player * first, enum cell * token) { strcpy(first->name, "Bob"); first->score = 0; int colorNo = rand() % 2; token = (c
从类型enum cell*分配给类型enum cell时不兼容的类型
我尝试了很多方法来修复它,但都没有成功。这是我的代码:
BOOLEAN init_first_player(struct player * first, enum cell * token) {
strcpy(first->name, "Bob");
first->score = 0;
int colorNo = rand() % 2;
token = (colorNo + 1 == 1) ? RED : BLUE;
first->token = token; //Error occurs here
return TRUE;
}
this is my data structure:
struct Player {
char name[20];
enum cell token; //takes 0 - 1 - 2
unsigned score;
};
enum cell {
BLANK, RED, BLUE
};
有人可以修复代码,因为我不知道我做错了什么 在
init_first_player
token
中是指向枚举的指针
在您的结构中,first
,token
是一个枚举
不能将指向枚举的指针分配给枚举
你应该使用
*token = (colorNo + 1 == 1) ? RED : BLUE;
first->token = *token
在
init\u first\u播放器中,令牌是指向枚举的指针
在您的结构中,first
,token
是一个枚举
不能将指向枚举的指针分配给枚举
你应该使用
*token = (colorNo + 1 == 1) ? RED : BLUE;
first->token = *token
您将令牌作为指针传入,可能是因为您希望在调用站点上看到修改后的值。(如果您不关心修改后的值,则不应在此函数中发送它)
因此,分配时需要取消对其的引用:
// use *token (instead of just token) to dereference and assign
*token = (colorNo + 1 == 1) ? RED : BLUE;
将其分配给first->token
时相同:
first->token = *token;
您将令牌作为指针传入,可能是因为您希望在调用站点上看到修改后的值。(如果您不关心修改后的值,则不应在此函数中发送它)
因此,分配时需要取消对其的引用:
// use *token (instead of just token) to dereference and assign
*token = (colorNo + 1 == 1) ? RED : BLUE;
将其分配给first->token
时相同:
first->token = *token;
为什么要将enum cell*token
传递给函数,而您所做的只是将其用作局部变量?如何调用init\u first\u player()
,你传递的是什么以及这些值是如何定义和初始化的?你知道指针和非指针的东西之间的区别吗?为什么你要传递enum cell*token
到函数,而你所做的只是像局部变量一样使用它?如何调用init_first_player()
,你传递的是什么?这些值是如何定义和初始化的?你知道指针和非指针之间的区别吗?非常感谢