首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

努力学习,练习中遇到的错误

种树的最佳时间是十年前,其次是现在。

学Bug=学霸哥(学霸中的一个Bug)

今天继续练习,把做练习中遇到的一些错误及解决总结梳理一下,可能对学习有一定的帮助。

1、函数原型中的数组参数名省略后,Linux中的gcc编译器提示“类型冲突”错误如下图1,加上参数名就可以了,但同样的程序省略参数名在dev-c++中能编译通过。

图1.编译错误

2、错误:[Error] ld returned 1 exit status。Linux gcc编译正常,dev-c++出现此错误,原因在于之前运行后遗留下的运行窗口没有正常完成关闭,手动叉掉相应窗口即可编译成功。

3、错误:[Error] invalid use of void expression。如下图2,原因在于将函数直接printf,而此函数返回值为空void,所以无效导致编译错误,与软件无关。

图2.编译错误

4、scanf输入两个字符串可以编译成功,但一直没有得到正确结果,只能得到一个字符串,原因在于数组s1[i]、s2[i]中的 i 没有赋值,改为s1[10]、s2[10]后,测试结果正常了,效果及源代码如下图3。另外一个小知识点:“因为数组本身就是指针,所以scanf("%s %s",&s1,&s2)中的取地址运算符&可以省略”,测试结果一样。

图3.运行效果及源代码

5、上图3中的程序运行过多的字符会给出“段错误 非法指令 总线错误”的提示或dev-c++程序无响应关闭的错误,原因是数组中括号中的数字太小了,加大就可以解决了。但其中具体的意义没有搞明白,这个10是随便给的一个数字,经过多次测试,s1的字符超过23个后会提示段错误,如果是s1[20],字符超过39后提示段错误,数字好像也没有什么特别关联。指针与数组这方面的知识还得下大功夫。

今天的效率照样是不高的,但这种针对性解决问题的方式也还是不错的,下次遇到同样的错误就知道该怎么做了。随着解决的错误问题越来越多,学习的效果可能就开始变好了。

加油!

坚持!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180206G006YY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券