我在我的代码中实现了队列,我在我的代码中做轮询。它在那里发出警告。“从'char *'赋值给'char'使指针变成整数而不需要强制转换”。谁能告诉我我哪里错了吗?
#define QUEUE_SIZE 200
char buffer[100];
char queue[100] ; // queue implementaion
char Rear = - 1;
char Front = - 1;
/*enqueue start */
printf("3. code reached here \n");
if (buffer != NULL)
{
if (Rear == QUEUE_SIZE - 1)
printf("Overflow \n");
else
{
if (Front == - 1)
Front = 0;
Rear = Rear + 1;
queue[Rear] = buffer; // this line having above warning //
2条答案
按热度按时间5hcedyr01#
queue[Rear]
的类型为char
,buffer
的类型为char [100]
。如果要复制第一个元素,则应为:如果你想复制一个范围,你可以使用
memcpy()
。由于queue
和buffer
是相同的大小,你必须注意缓冲区溢出:6l7fqoea2#
在上面的语句中,
queue[Rear]
的类型为char
,而buffer
的类型为char *
。由于在C中没有从char *
到char
的隐式转换,因此编译器生成该警告是正确的。如果目的是复制第一个字符,则语句应为:
旁白:
buffer != NULL
没有意义,因为buffer
是一个数组,而不是指针。它不可能是NULL
。