错误C4700:使用了未初始化的局部变量'c',

时间:2018-09-08 12:37:04

标签: c++

谁能解释此错误并使用array和typedef char以及使用array实现堆栈的最佳方案?

typedef char StackItemType;

class stack {

    public:
        stack(int size)
        {
            items = new StackItemType[size];
            maxstack = size;
            top = -1;
        }
        ~stack() {
            delete[] items;
        }
        bool isEmpty();
        bool isFull();
        bool push(char newitem);
        bool pop(char *stacktop);
    private:
        StackItemType *items;
        int top, maxstack;
    };

int main()
{
    StackItemType c ;
    stack stack(5);
    stack.push('a'); 
    stack.push('b');
    stack.push('c'); 
    cout << c;
    cout << endl;
    system("pause");
}

1 个答案:

答案 0 :(得分:1)

在代码中,您声明一个变量c。然后,您尝试对变量进行的第一件事就是打印其值。但是您从未给它提供一个值,因此编译器会为您提供“未初始化的局部变量”错误。就是这个意思,您在给变量赋值之前尝试使用变量的值。

我猜您是要为c提供栈顶项目的值。如果是这样,那么您应该已经编写了这段代码

StackItemType c ;
stack stack(5);
stack.push('a'); 
stack.push('b');
stack.push('c'); 
stack.pop(&c); // <<--- new code here that gives c a value
cout << c;
cout << endl;
system("pause");