从“char *”向“char”赋值将从指针生成整数而不进行强制转换

qyzbxkaa  于 2023-03-01  发布在  其他
关注(0)|答案(2)|浏览(193)

我在我的代码中实现了队列,我在我的代码中做轮询。它在那里发出警告。“从'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 //
5hcedyr0

5hcedyr01#

queue[Rear]的类型为charbuffer的类型为char [100]。如果要复制第一个元素,则应为:

queue[Rear] = *queue;

如果你想复制一个范围,你可以使用memcpy()。由于queuebuffer是相同的大小,你必须注意缓冲区溢出:

memcpy(&queue[Rear], buffer, sizeof queue - Rear);
6l7fqoea

6l7fqoea2#

queue[Rear] = buffer;

在上面的语句中,queue[Rear]的类型为char,而buffer的类型为char *。由于在C中没有从char *char的隐式转换,因此编译器生成该警告是正确的。
如果目的是复制第一个字符,则语句应为:

queue[Rear] = *buffer;

/* OR */

queue[Rear] = buffer[0];

旁白:buffer != NULL没有意义,因为buffer是一个数组,而不是指针。它不可能是NULL

相关问题