打印

这个程序有问题吗?

[复制链接]
906|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wuhany|  楼主 | 2013-11-22 23:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  • void test_fun(void)
  • {
  • char a[10];
  • // 指针b指到数组a 顶端的下一个 byte
  • //
  • char*b=a+10
  • //将数组 a的每个元素设为100
  • //
  • do
  • {
  • b--;
  • b[0]=100;
  • } while(b>=a);
  • }

复制代码
p先不管程序的用途,这个程序有问题吗?

相关帖子

沙发
heweibig| | 2013-11-22 23:25 | 只看该作者
我试一下。。。

使用特权

评论回复
板凳
wuhany|  楼主 | 2013-11-22 23:27 | 只看该作者
嗯,坐等答案

使用特权

评论回复
地板
jiahy| | 2013-11-22 23:28 | 只看该作者
我运行了楼主的程序其结果如下图所示。。。


使用特权

评论回复
5
jiahy| | 2013-11-22 23:28 | 只看该作者
楼主你运行的结果就是将数组a赋值成100(十进制)

使用特权

评论回复
6
jiaxw| | 2013-11-22 23:31 | 只看该作者
乍看这下是没什么问题,但这个函数中要一执行很可能就会死机。

使用特权

评论回复
7
wuhany|  楼主 | 2013-11-22 23:33 | 只看该作者
除了char*b=a+10这句后面应该有分号,别的应该没有什么问题

使用特权

评论回复
8
spark周| | 2013-11-22 23:34 | 只看该作者
有个简单的逻辑错误,当b一直减到a时,因为while循环的条件是b>=a,所以最后一次进入循环时b会等于
(a-1)当把数组a开头的上一个元素设为100会发生什么事呢~~~

使用特权

评论回复
9
wuhany|  楼主 | 2013-11-22 23:36 | 只看该作者
乍一看还真是看不出来,看看楼上的分析,真是长见识,学习了。这是个程序的bug

使用特权

评论回复
10
wuhany|  楼主 | 2013-11-22 23:36 | 只看该作者
那就先结贴了,多谢大家

使用特权

评论回复
11
pmp| | 2013-11-23 21:15 | 只看该作者
这个还真看不出来是干嘛用的。

使用特权

评论回复
12
pmp| | 2013-11-23 21:16 | 只看该作者
你要实现什么功能,看看大家能给出什么优化代码么

使用特权

评论回复
13
i1mcu| | 2013-11-24 19:32 | 只看该作者
木看懂的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

879

主题

10435

帖子

4

粉丝