C 队列未正确返回后值?

C 队列未正确返回后值?,c,queue,C,Queue,我想用动态数组创建队列,问题是当我在int main中测试q.rear值以便以后插入数据时,它不再是-1。我做错了哪一部分 下面是一段代码: #include <stdio.h> #include <conio2.h> #include <stdlib.h> typedef struct{ int *data; int front,rear,max; }tqueue; tqueue create(int size) { tque

我想用动态数组创建队列,问题是当我在int main中测试q.rear值以便以后插入数据时,它不再是-1。我做错了哪一部分

下面是一段代码:

#include <stdio.h>
#include <conio2.h>
#include <stdlib.h>

typedef struct{
    int *data;
    int front,rear,max;
    }tqueue;
tqueue create(int size)
{
   tqueue q;
   q.data=(int *)malloc(size*sizeof(int));          
   q.front=0;
   q.rear=-1;
   q.max=size;
   return q;   
}
int main()
{
   tqueue q;
   int size=4;
   create(size);
   printf("\n%d",q.rear);
   getch();   
   return 0;
}

你有两个不同的问题,都叫q。一个是您在create中创建的,您初始化,另一个是您在main中创建的,您不初始化。

您没有将创建的结果分配给q。以下调用创建并丢弃结果,使q保持其原始状态:

create(size);
若要修复,请将上述行替换为:

q = create(size);
q = create(size);

您忘记分配返回值: