1

我在分配给另一个结构指针中的结构指针时遇到问题

结构如下所示:

头文件.h

typedef struct {
    int drawnlines;
    char *name;
} player;

typedef struct {
    char a, b;
    p *mover;
    p *previous;
} lastmove;

在另一个函数中,我调用了另一个应该更改指向该结构的指针的函数,这也是给我警告的函数:

程序.c

#include header.h
.....
lastmove lmv;
lmv.mover=malloc(sizeof(player *));
lmv.previous=malloc(sizeof(player *));
player p;
p.drawnlines=0;
p.drawnlines=0;
strcpy(p.name, "patrik");
function(&lmv, &p);

.....
int
function(lastmove *lmv, player *p)
{
    lmv->a='b';
    lmv->b='a';
    lmv->previous=lmv->mover;
    lmv->mover=p;        // warning: assignment from incompatible pointer type
}

我的代码有什么问题?

更新:现在代码有效,是一个简单的错误。结构“lastmove”现在更改为

typedef struct {
    char a, b;
    player *mover;
    player *previous;
} lastmove;
4

1 回答 1

1

好吧,在你的代码中,mover是一个指向 type 的指针p,它没有在任何地方定义——你是说这个吗?

typedef struct {
    char a, b;
    player *mover;
    player *previous;
} lastmove;

另外,我认为您的分配有问题。当您需要为 a 提供足够的空间时,您正在为 a 分配足够的空间player*,这是一个指向玩家的指针player

于 2012-11-12T02:08:01.453 回答