【发布时间】:2011-01-28 02:49:15
【问题描述】:
我的第一个 C 任务是创建一个队列。我使用的是基于数组的实现,而不是链表。
当我尝试编译我的代码时出现以下错误:
Queue.c: In function 'Enqueue':
Queue.c:23: warning: assignment from incompatible pointer type
这是我的代码,如果需要,我会提供标头代码:
#include "QueueElement.h"
#include "Queue.h"
#define QUEUE_SIZE 10
struct QueueStruct {
QueueElement *contents[QUEUE_SIZE];
int size;
};
Queue CreateQueue(void) {
Queue q = malloc(sizeof(struct QueueStruct));
q->size = 0;
return q;
}
void DestroyQueue(Queue q) {
free(q);
}
void Enqueue(Queue q, QueueElement *e) {
if (q->size < QUEUE_SIZE) {
q->contents[q->size++] = *e; /* PROBLEM IS HERE */
}
}
非常感谢您对此问题的任何帮助以及任何其他建议。 谢谢大家。
【问题讨论】:
-
这似乎是深奥的指针符号用法。您试图取消对 e 的引用,从而将 e 的值(它是一个几乎任何大小的连续内存块)复制到一个指针(通常是 4 个字节)中。东西不合适,即使尺寸匹配,
QueueElement与QueueElement*也不一样。 -
Queue是什么?您提供的代码中没有Queue的定义。