所以,我有结构:

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

据我所知,调用它“*QueueADT”会自动将任何“QueueADT”项变成指针。所以:
QueueADT queue;

将是指向先前定义的结构的指针。我想知道你是怎么搞到这种结构的。通常情况下是:
QueueADT queue = malloc(sizeof(QueueADT));

但是“QueueADT”不是指针吗?所以,您不是只为指向队列结构的指针分配了足够的内存吗?我的代码在valgrind中得到了一些无效的写操作,我认为这是队列初始化不好的结果。

最佳答案

通常为结构和指向它的指针定义类型,如下所示:

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

然后可以按照您的建议使用sizeof(QueueADT)
pQueueADT queue = malloc(sizeof(QueueADT));

关于c - 寻找澄清的结构指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23022871/

10-10 18:24