问题描述
- 为什么这个循环队列程序出错
-
#include<malloc.h> typedef struct Queue { int *pBase; int front; int rear; }QUEUE,*PQUEUE; void init(PQUEUE pQ);//初始化队列 bool en_queue(PQUEUE pQ,int val);//向队列里放入数据 void traverse(PQUEUE pQ);//遍历队列 bool full_queue(PQUEUE pQ);//判断队列是否为满 int main() { PQUEUE Q; init(Q); en_queue(Q,1); traverse(Q); return 0; } void init(PQUEUE pQ) { pQ->pBase=(int*)malloc(sizeof(int)*6); pQ->front=0; pQ->rear=0; } bool en_queue(PQUEUE pQ,int val) { if(full_queue(pQ)) { printf("队列已满 "); return false; } else { pQ->pBase[pQ->rear]=val; pQ->rear=(pQ->rear + 1)%6; return true; } } bool full_queue(PQUEUE pQ) { if((pQ->rear + 1)%6==pQ->front) { return true; } else { return false; } } void traverse(PQUEUE pQ) { while(pQ->front!=pQ->rear) { printf("%d ",pQ->pBase[pQ->front]); pQ->front=(pQ->front + 1)%6; } return; }
这个程序重是报错,在VS2008的C++的环境下运行,报错提示为:队列.cpp(16) : warning C4700: 使用了未初始化的局部变量“Q”
解决方案
因为你真的没有初始化,Q是个指针,你又不为它分配空间,然后又直接用了,当然报错啦。
时间: 2024-12-23 08:25:32