种树的最佳时间是十年前,其次是现在。
学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后提示段错误,数字好像也没有什么特别关联。指针与数组这方面的知识还得下大功夫。
今天的效率照样是不高的,但这种针对性解决问题的方式也还是不错的,下次遇到同样的错误就知道该怎么做了。随着解决的错误问题越来越多,学习的效果可能就开始变好了。
加油!
坚持!
领取专属 10元无门槛券
私享最新 技术干货