我有一个如下结构:
typedef struct {
player *lastmover;
player *previous;
} lastmove;
typedef struct {
int moves;
char *name;
} player;
我尝试像这样进行内存分配:
lastmove lmv;
lmv.lastmover=malloc(sizeof(player *));
lmv.previous=malloc(sizeof(player *));
.....
callfunction(&lmv);
.....
然后在另一个地方我使用指针 lmvp (lastmover *) 并像这样进行分配:
void
callfuntion(lastmove *)
{
.....
lmvp->previous=lmvp->lastmover;
lmvp->lastmover=p; //where p is of type (player *)
.....
}
这一切都很好,但我不知道如何控制天气先前的移动器被初始化。在程序中的第一个游戏移动中,lastmover 变量 (player *) 被初始化,但前一个变量被分配为 NULL(或垃圾?) lmvp->previous=lmvp->lastmover;
。但我想以某种方式检查前一个移动者是否已初始化。我正在尝试这个:
void
callfunction(lastmove *)
{
......
......
if(lmvp->previous!=NULL)
......
}
但我很确定它不会做.. 控制这个的最好方法是什么?