问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#define Maxsize 5
typedef struct {
int data[Maxsize];
int top;
}Sqstack;
void Initstack(Sqstack*& S)
{
S = (Sqstack*)malloc(sizeof(Sqstack));
S->top = 0;
}
void Push(Sqstack*& S, int e)
{
S->data[S->top] = e;
S->top++;
}
void Pop(Sqstack*&S, int&e)//e是一个无意义的值的本身
{
S->top--;
printf("赋值前Pop函数中top=%d\n", S->top);
e = S->data[S->top];//问题②:虽然我知道这个操作有问题,但是为什么这个操作会使S中的top加1??
printf("赋值后Pop函数中top=%d\n", S->top);
}
int main()
{
Sqstack* S;
Initstack(S);
printf("请开始输入栈\n");
for (int i = 0; i < 5; ++i)
{
int x;
scanf("%d", &x);
Push(S, x);
}
printf("\n");
printf("删除之前main函数中top=%d\n", S->top);
Pop(S, S->data[S->top]);//问题①:这里我知道数组越界了,传进去的是一个无意义的东西,但是为何不报错???
printf("删除之后main函数中top=%d\n", S->top);
}