老许C语言不懂,不敢发言,想看看牛人超人们的答案,提着菜篮子在后面捡菜,跟着学点知识。
现在楼主结贴了,楼主没给出答案,我想说说我对此贴肤浅的看法。
我认为楼主的C语言功底很深厚,深不可测,本贴是楼主出题考考21IC上网友的,老许连几十条C语言都写不全的菜鸟可不敢胡言插嘴发言,我只是感到,楼主一开始出题时已给出答案及提示了,并用 【 】 强调错误的地方!当第二种情况时,楼主在子函数中对局部变量类型用 uchar ret[4]=【0】; 声名,大家知道, uchar ret[4]; 是声名包含4个uchar字型的数组,其内容存储在ret[0], ret[1], ret[2], ret[3] 中,而楼主故意在声名局部变量类型时加了 =【0】; 变成了 uchar ret[4]=【0】; 在声名局部变量类型时,还对ret[4]初始化赋于0值,且这个0值加【 】预以强调,已经给出了提示,局部变量ret[4]已超出了子函数中对局部变量数组ret的地址范围,在没有定义的未知地址上的赋0值操作,破坏了占用该地址的其他变量。故出现采集到的温度数字剧烈变化,且数字不正常现象。
不知老许是否将楼主出的题目给解答出来了? 请楼主指正,谢谢。 |