如何在另一个结构指针中分配结构指针

时间:2012-11-12 01:59:47

标签: c pointers struct

我无法在另一个结构指针

中分配结构指针

结构看起来像这样:

header.h

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

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

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

program.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;

1 个答案:

答案 0 :(得分:1)

嗯,在你的代码中,mover是一个指向p类型的指针,它没有在任何地方定义 - 你是说这个吗?

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

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