`
jubincn
  • 浏览: 242722 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
文章分类
社区版块
存档分类
最新评论

对遇到的段错误的反思

 
阅读更多

源代码如下:

1 #include <stdio.h>

2
3 struct CoinPurse{
4 | unsigned gold;
5 | unsigned silver;
6 | unsigned cooper;
7 };
8
9 struct CoinPurse countCoins(char *coins){
10 | static struct CoinPurse cp;// = {0, 0, 0};
11 | char c;
12
13 | if(coins == NULL)
14 | | exit(1);
15 | while( (c=*coins) != '\0'){
16 | | switch(c){
17 | | | case 'g': cp.gold++;
18 | | | | break;
19 | | | case 's': cp.silver++;
20 | | | | break;
21 | | | case 'c': cp.cooper++;
22 | | | | break;
23 | | }
24 | | coins++;
25 | }
26
27 | return cp;
28 }
29
30 int main(){
31 | char *coins;
32 | struct CoinPurse cp;
33
34 | printf("please input a string made purely of 's', 'g' or'c'\n");
35 | gets(coins);
36 | cp = countCoins(coins);
37 | printf("gold: %d\tsilver: %d\tcooper: %d\n", cp.gold,cp.silver, cp.cooper);
38
39 | return 0;

40 }

这段程序执行起来没有问题,但退出时报了"segmentation fault"

问题出在main函数的coins指针上。coins指针负责存储从终端传过来的一个字符串,但没有给其分配空间,因此读入的字符串被存储到一个未知的位置。程序退出时,出现了问题。


这段代码还有很多问题,比如使用了gets()而不是fgets()。但最大的问题在于我在写程序时脑子里没有内存的概念,最近在读《C专家编程》,里面对于程序的组成结构和运行时结构有很好的讲解,带着那些知识去看我的程序,很容易就发现那个错误。

在C语言中,使用指针是件恐怖的事情,因为很容易将指针自身与指针所指向的地址弄混。我认为在使用指针时,一定要确定这个指针所指向内存的位置及生命周期,如果这个问题想不清楚,就容易出现运行时错误。

分享到:
评论

相关推荐

    四年级数学下册5解决问题的策略5.1解决问题的策略_画线段图教学反思苏教版202005041191

    通过教学反思,教师可以更好地理解学生在学习画线段图解决问题时遇到的困难,以及哪些教学环节能够有效促进学生理解和应用这种方法。 标签“资料”表明这是一个教学资源,可能包括教材、课件、练习题等,用于支持...

    小学数学课堂教学中错误资源的有效利用的研究结题报告.pdf

    反思阶段,教师们深入探讨研究过程中遇到的问题,总结经验教训。最后的总结阶段,对整个研究过程进行了全面回顾,提炼出研究成果和实践经验。 研究的主要目的是揭示教师如何捕捉和利用学生的错误资源,形成一套理论...

    三年级数学下册一除法1.5节约教学反思素材北师大版202005061115

    例如,让学生在完成一道题目后,回顾自己的解题步骤,思考是否有更简便的方法,或者在遇到错误时分析错误的原因。这样不仅锻炼了他们的逻辑思维,还能让他们学会自我调整,改进学习策略。 此外,教师还应该鼓励学生...

    五年级数学上册5分数的意义5.2分数的再认识二教学反思素材北师大版

    同时,鼓励学生自我评价,培养他们的反思能力,让他们在错误中学习,在成功中成长。 总的来说,教授分数的意义并不仅仅是传授知识,更是培养学生的思维能力和解决问题的能力。通过创造性的教学方法和深入的教学反思...

    中班体育游戏教案及教学反思《网鱼》.doc

    3. 分组游戏与指导:通过分组游戏,教师能更针对性地指导每个孩子,发现并纠正他们在游戏中的错误,确保游戏的顺利进行。 4. 放松与退场:游戏结束后,组织一些轻松的整理活动,帮助孩子们逐渐从兴奋状态过渡到平静...

    教师资格考试小学教育知识与能力考点:教学反思.pdf

    教学反思对教师个人成长有着重大意义: 1. 增强人格魅力:通过反思,教师能够更好地理解自我,提升专业素养,进而增强在学生和同事间的影响力。 2. 提升教学能力:反思可以帮助教师找出教学中的不足,改进教学方法...

    部编版道德与法治六年级上册《2学会宽容》教学反思(两篇).pdf

    感动于每个孩子的全身心地投入,感动于孩子们对同伴犯错时真诚的宽容,感动于他们教会我不要让宽容"变质",感动于孩子们真诚地表达自己的感受,哪怕是"自黑式"调侃地说:"老师,我暂时做不到对别人错误的宽容"···...

    调试九法:软硬件错误的排查之道_调试九法_硬件调试_软硬件错误的排查之道_

    1. **理解问题**:首先,当遇到错误时,必须对问题有深入的理解。这包括阅读错误日志、复现错误场景以及理解可能导致问题的系统架构。通过分析,确定错误的类型,是软件错误还是硬件故障。 2. **重现问题**:能够...

    编写测试用例的反思

    4. **关注错误路径**:不仅要关注正常路径下的测试用例,还要重视异常情况下的测试,因为这往往是用户最常遇到的问题之一。 5. **优化测试用例比例**:建议将测试用例的比例调整为:PASS:ERROR:FAIL=2:7:1,这样可以...

    学习共同体理念下初中数学反思性教学实践研究.docx

    初中数学反思性教学实践主要涉及两个方面:一是识别并分析错误类型,以弥补教学不足;二是加强督促引导,帮助学生学会反思。在处理错误时,教师不仅要指导学生找出错误原因,还要引导他们分析错误的解题思路,避免...

    美术教学反思范文.pdf

    美术教学反思是一个教师在教学实践后,对于教学过程、方法、学生学习效果、以及所遇到问题和挑战进行深入思考的过程。它有助于教师提高教学质量和专业技能,并进一步激发学生的创造力和艺术感悟能力。以下是美术教学...

    初中语文月考反思-语文月考反思.docx

    这篇文档实际上并不是关于IT行业的,而是关于学生对初中语文月考的反思。不过,我们可以从中提炼出一些普遍适用的学习方法和心理调整策略,这些对于任何学科的学习都是有益的,包括IT学习。 首先,文档强调了反思的...

    国旗下演讲:学习过程中的反思.pdf

    面对错误,我们需要深入反思,分析错误的原因,找出“粗心点”,以防止同样的错误再次发生。对于解答不出的难题,反思的过程应当关注卡住的环节,寻找问题的症结,尝试采用不同的解题策略。解决一个问题后,进一步...

    18 《小猴子下山》教学反思.docx

    这篇课文是小学语文教材中的看图学文,通过小猴子下山途中遇到的不同事物,让学生理解故事的主线,学习动词的使用,并引发对生活哲理的思考。 首先,教师在教学设计上注重预习和反馈,通过检查预习情况引导学生进入...

    三年级数学下册三乘法3.3队列表演二教学反思素材北师大版20200506189

    在学习初期,学生们可能会遇到一些常见的困难,比如在进行第二层计算时,误将乘几十当作乘几,或者混淆乘数,导致计算错误。 为了解决这些问题,教师采取了一种有效的策略,即在学生书写竖式计算的过程中,同时写出...

    七年级生物上册 对一份期中考试题的总结与反思素材 济南版.doc

    学生在考试中遇到的错误反映了对生物术语和概念的理解不足,如错别字问题(鳃丝、韧带、肌腱、气囊、神经的正确书写),以及对生物分类和生殖方式的理解不清晰。 2. 学生学习习惯:错别字现象反映出学生缺乏良好的...

    基于深度学习的深度教学——以“命题与定理”一课的教学反思学习为例.pdf

    这样的错误理解可能是对“命题”概念理解不准确的结果。 进一步的教学活动中,教师引导学生辨别真假命题,通过比较和分析,帮助他们掌握命题的真假性和判断标准。例如,通过“等角的余角相等”和“相等的角是对顶角...

    二年级数学上册1加与减1.2秋游教学反思素材北师大版

    当遇到错误时,教师要巧妙地指出问题,让全班同学共同参与,从中学习并避免同样的错误。这样,学生不仅理解了错误,还学会了如何自我修正和提高。 其次,面对课堂上可能出现的多种解题算法,教师应保持开放的心态,...

    小学数学错题反思调查问卷.doc

    通过这份问卷,我们可以深入探讨学生在数学学习过程中遇到的问题,以及他们对待错误的态度和处理策略。 首先,问卷关注的是学生的自我评估。Q1问到学生对自己的数学成绩的感受,这反映了他们的自我期望和实际表现的...

Global site tag (gtag.js) - Google Analytics