这个程序有什么问题吗

[复制链接]
2259|7
 楼主| huangfeng33 发表于 2012-4-4 22:56 | 显示全部楼层 |阅读模式
本帖最后由 huangfeng33 于 2012-4-4 22:58 编辑
  1. void test_fun(void)
  2. {
  3. char a[10];
  4. // 指针b指到数组a 顶端的下一个 byte
  5. //
  6. char*b=a+10

  7. //将数组 a的每个元素设为100
  8. //
  9. do
  10. {
  11. b--;
  12. b[0]=100;
  13. } while(b>=a);
  14. }
p先不管程序的用途,这个程序有问题吗?
给力芯片 发表于 2012-4-5 08:21 | 显示全部楼层
我试一下。。。
给力芯片 发表于 2012-4-5 08:30 | 显示全部楼层
我运行了楼主的程序其结果如下图所示。。。
楼主你运行的结果就是将数组a赋值成100(十进制)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
jxmzzr 发表于 2012-4-5 21:19 | 显示全部楼层
乍看这下是没什么问题,但这个函数中要一执行很可能就会死机。
lz19780510 发表于 2012-4-5 21:54 | 显示全部楼层
好像没有什么问题吧。
TI_MCU 发表于 2012-4-5 22:44 | 显示全部楼层
除了char*b=a+10这句后面应该有分号,别的应该没有什么问题
拿起书本 发表于 2012-4-5 23:24 | 显示全部楼层
有个简单的逻辑错误,当b一直减到a时,因为while循环的条件是b>=a,所以最后一次进入循环时b会等于
(a-1)当把数组a开头的上一个元素设为100会发生什么事呢~~~
tianli1980 发表于 2012-4-6 21:18 | 显示全部楼层
乍一看还真是看不出来,看看楼上的分析,真是长见识,学习了。这是个程序的bug
您需要登录后才可以回帖 登录 | 注册

本版积分规则

506

主题

2446

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部