c - 队列无法正确返回后值?

标签 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)
{
   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;
}

最佳答案

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

create(size);

要修复,请将上面的行替换为:

q = create(size);

关于c - 队列无法正确返回后值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10514006/

相关文章:

c++ - GCC Windows __asm RDTSC 破坏者

c++ - 在两个线程之间传递数据时的时间不一致

java - ArrayDeque 和 LinkedBlockingDeque

C++ << 在队列模板中重载

java - 将队列转换为列表

c - GCC 将所有字符串存储在 .rodata 中

c - Lua中为什么使用索引方法而不是特殊方法

c - 1- 在 C 中创建一个库 2- 在 MASM 中调用并使用它

没有循环的 C 程序意外地表现得像一个循环

java - 设计队列线程消费者的性能问题