爱问知识人 爱问教育 医院库

switch语句,为什么case3执行不了?类似空循环?

首页

switch语句,为什么case3执行不了?类似空循环?

switch语句,为什么case3执行不了?类似空循环?如何修改才能实现对名字的检索?

switch语句,为……
提交回答
好评回答
  • 2019-03-09 22:35:19
      问题有好几个,最重要的原因是你的BN指针没有申请空间,
    struct WORKER *BN;  //你这里只是声明了一个指针变量,编译器仅仅时在栈区给你生成了一个指针
    该指针你没有初始化,因此是个野指针,如果是在windows系统中,出现的问题是不可预知的,但是在linux、unix系统中就会直接被系统关闭;
        int N, k, razm;  //你定义了N,我估计是数据的总数,但是没有初始化,他的值不可预知
        free(BN);  //野指针释放,会出现二次释放的问题,windows下可能没有表现出来,linux就崩溃
        
    你在switch语句中的1初始化了N和BN,也就是说,要执行其他的2,3你就必须先执行1,否则BN和N就是不可预知的。
      因此我建议你给出一个标志,来确保只有执行了1后2,3才能被执行,否则2和3可顶会出问题 另外,在input函数中的f没有初始化,这是个隐患 看来你是初学者,给你一个我的教训: (1)指针一定要申请空间后在使用,否则出现问题都没有办法查,野指针就是炸弹 (2)变量在使用前一定要初始化,尤其是整形的,很太容易被忽略,但是问题很严重 (3)学会将运行过程的信息打印下来,以便你分析问题,这就是日志,实际生产环境下排错的唯一手段。
      

    高***

    2019-03-09 22:35:19

其他答案

    2019-03-09 22:37:02
  • opdch 中的if( (BN + i)->name != nm),是否要把!=换成==;
    有些细节是:其中input中变量f没有初始化,opd可以简化。
    main中的变量razm没有初始化,运行中值会改变,是否要改为输入ramz的值或者初始化一下。

    心***

    2019-03-09 22:37:02

  • 2019-03-09 22:05:48
  • 条件一定要写清楚呀

    独***

    2019-03-09 22:05:48

类似问题

换一换

相关推荐

正在加载...

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 174-193
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):