C++ 在指定位置打印int或char数组有什么问题

C++ 在指定位置打印int或char数组有什么问题,c++,stack,push,C++,Stack,Push,我在头文件中有一个名称空间,实现了一个基本堆栈。 现在在push函数中,它应该将一个字符推送到堆栈上,然后 使用pop函数,它将从堆栈中删除一个字符,然后 这是我的问题,将弹出的元素打印到控制台,但是 它实际上从来没有这样做过。 我的问题是为什么会发生这种情况,我可能会错过什么 int main() { myStack::push(12); myStack::push(344); myStack::pop(); return 0; } 和头文件: vo

我在头文件中有一个名称空间,实现了一个基本堆栈。 现在在push函数中,它应该将一个字符推送到堆栈上,然后 使用pop函数,它将从堆栈中删除一个字符,然后 这是我的问题,将弹出的元素打印到控制台,但是 它实际上从来没有这样做过。 我的问题是为什么会发生这种情况,我可能会错过什么

int main()
{
    myStack::push(12);
    myStack::push(344);


    myStack::pop();

    return 0;


}
和头文件:

void push(int c)
{
    if(top == max_size) throw Overflow();
    v[top] = c;
    top++;
    
}

void pop()
{
    
    printf("%d\n",v[top]);
    top--;
}
myStack定义:

namespace myStack {

const int max_size = 200;
int top = 0;
int v[max_size];


class Overflow {
    public:
        bool isOverflow = true;
        
};

void push(int c)
{
    if(top == max_size) throw Overflow();
    v[top] = c;
    top++;
    
}

void pop()
{
    
    printf("%d\n",v[top]);
    top--;
}
}

请注意,对
push
的调用在递增
top
之前分配给
v[top]
,因此在
pop
函数中,
top
的值是未分配的整数

在打印
v[top]
的值之前,只需减小
top

void pop()
{  
    top--;
    printf("%d\n",v[top]);
}

这是因为你的代码有bug。鉴于您提供的信息,没有人能比这更具体。请出示一张照片,说明编辑是一种改进,但这还不够。请显示
myStack
的定义。头文件的用途是什么?它定义了一些您从未使用过的免费函数。这些定义看起来也非常类似于
myStack
命名空间中定义的自由函数。
myStack
应该是一个类,而不是命名空间。谢谢你,cigien,这就是我要找的。我最近开始按书编写代码,其中有一些示例,如堆栈名称空间和头文件,如果它看起来像管理糟糕的代码,那么很抱歉。再次感谢,现在它可以正常工作了。@Denismhic很高兴它可以正常工作。请注意,如果答案解决了您的问题,您可以接受答案。我如何接受您的答案?@Denismuic答案旁边应该有一个复选标记,您可以单击。