我想用动态数组创建队列,问题是当我在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;
}
答案 0 :(得分:0)
您有两个不同的tqueue
,均称为q
。您初始化的一个(您在create
中创建的那个)和一个(您在main
中创建的那个)没有。
答案 1 :(得分:0)
您未将create()
的结果分配给q
。以下调用create()
并放弃结果,使q
保持原始状态:
create(size);
要修复,请将以上行替换为:
q = create(size);
答案 2 :(得分:0)
您忘记分配返回值:
q = create(size);