程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 局部變量-為什麼這個循環隊列程序出錯

局部變量-為什麼這個循環隊列程序出錯

編輯:編程綜合問答
為什麼這個循環隊列程序出錯
#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("隊列已滿\n");
        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是個指針,你又不為它分配空間,然後又直接用了,當然報錯啦。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved