元素没有被弹出

Mis*_*u4u 1 c stack

这是pop()函数,我写的是弹出一个堆栈的元素.到目前为止,我已成功将元素推入堆栈并显示堆栈.所以,我想我的pop()功能在某处做错了.这是我的pop功能:

void pop(int newstack[], int *newtop, int bound )
{
    int item;
    if(*newtop<0)
        printf("\n CAUTION!!! UNDERFLOW");
    else
    {
        item=newstack[*newtop];
        *newtop--;
        printf("\n Element popped->%d",item);
    }
}
Run Code Online (Sandbox Code Playgroud)

我没有机会,我也发布了这个show()功能:

void show_stack(int newstack[], int *top)
{
    int i;
    printf("\n");
    for(i=0;i<=*top;i++)
        printf("%d",newstack[i]);
}     
Run Code Online (Sandbox Code Playgroud)

我猜show函数没有错误.

ver*_*ose 5

*提领/间接操作符比优先级低--后缀减量操作.你的陈述

*newtop--;
Run Code Online (Sandbox Code Playgroud)

将被解析为

*(newtop--);
Run Code Online (Sandbox Code Playgroud)

而且,由于值newtop--当前值newtop,语句实现精确一无所获.它取消引用newtop,并且对取消引用的值没有任何作用.

你真的想要这样的东西:

*newtop = *newtop - 1;
Run Code Online (Sandbox Code Playgroud)

要么

(*newtop)--;
Run Code Online (Sandbox Code Playgroud)

有关表达式的详细信息,请参阅此答案*newtop--.