寻找关于struct指针的说明

时间:2014-04-11 21:26:05

标签: c

所以,我有结构:

typedef struct {
    int (*compare)(const void *a, const void *b);
    struct node *head;
    struct node *tail;
} *QueueADT;

我的理解是将其称为" * QueueADT"自动制作任何" QueueADT"项目成指针。所以:

QueueADT queue;

将是指向先前定义的结构的指针。我想知道你如何malloc这样的结构。通常它只是:

QueueADT queue = malloc(sizeof(QueueADT));

但是" QueueADT"不是指针?那么,您是否只为指向队列结构的指针分配了足够的内存?我使用我的代码在valgrind中得到了一些无效的写入,我认为这是由于我的队列初始化错误导致的。

2 个答案:

答案 0 :(得分:4)

为结构和指针定义类型是正常的,如下所示:

typedef struct {
    ...
} QueueADT, *pQueueADT;

然后您可以按照建议使用sizeof(QueueADT)

pQueueADT queue = malloc(sizeof(QueueADT));

答案 1 :(得分:0)

QueueADT queue = malloc(sizeof(*queue));