私は次のような構造体を持っています:
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)
......
}
しかし、私はそれがうまくいかないことを確信しています..これを制御するための最良の方法はどうですか?