十-二 2022-06-04 23:56 采纳率: 94.3%
浏览 45

帮别人改代码时看到一个自己没遇过的问题,最后我自己都整不明白了

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#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);
}


  • 写回答

1条回答 默认 最新

  • Jacob*y 2022-06-05 13:50
    关注

    请问一下所使用的编译器,以及编译器是什么标准?

    评论

报告相同问题?

问题事件

  • 创建了问题 6月4日

悬赏问题

  • ¥50 关于弹性波动方程求解的问题:
  • ¥100 C# 做 10个串口数据采集;采集数据填到 EXE表中;1路与PLC MODBUS通讯 ;要求速度尽量快点; 有能做完整程序的单聊,重酬
  • ¥15 P0口接8个LED,编写程序,并绘制proteus仿真电路原理图
  • ¥15 java,maven
  • ¥15 单独编译安卓13车载evs
  • ¥20 完成实验一,要求按照图片要求,实验报告一定要按照要求,并且回答简答题,截止日期明天中午12:00
  • ¥30 孪生网络模型,当训练集与测试集共用一个数据集时,训练准确率为100%,而测试准确率仍在50%左右浮动(正常来说测试的都是学习过的数据,准确率应为100%)。【不要GPT及任何大模型回答】
  • ¥15 关于#pynetdicom#的问题,如何解决?(标签-python|关键词 c_get、pydicom、pynetdicom)
  • ¥15 怎么在c语言上输出对应数据类型的内存大小以及数值范围
  • ¥30 河流的geojson数据为什么放到mapshaper网站中全部是长方形