所以,我有结构:
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/