这个程序有问题吗?

[复制链接]
548|10
 楼主| wuhany 发表于 2016-8-20 18:18 | 显示全部楼层 |阅读模式

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 发表于 2016-8-20 18:21 | 显示全部楼层
我试一下。。。
 楼主| wuhany 发表于 2016-8-20 18:22 | 显示全部楼层
嗯,坐等答案
jiahy 发表于 2016-8-20 18:24 | 显示全部楼层
楼主你运行的结果就是将数组a赋值成100(十进制)
jiaxw 发表于 2016-8-20 18:25 | 显示全部楼层
乍看这下是没什么问题,但这个函数中要一执行很可能就会死机。
 楼主| wuhany 发表于 2016-8-20 18:27 | 显示全部楼层
除了char*b=a+10这句后面应该有分号,别的应该没有什么问题
spark周 发表于 2016-8-20 18:28 | 显示全部楼层
有个简单的逻辑错误,当b一直减到a时,因为while循环的条件是b>=a,所以最后一次进入循环时b会等于
(a-1)当把数组a开头的上一个元素设为100会发生什么事呢~~~
 楼主| wuhany 发表于 2016-8-20 18:29 | 显示全部楼层
乍一看还真是看不出来,看看楼上的分析,真是长见识,学习了。这是个程序的bug
wyjie 发表于 2016-8-20 18:29 | 显示全部楼层
你要实现什么功能,看看大家能给出什么优化代码么
 楼主| wuhany 发表于 2016-8-20 18:30 | 显示全部楼层
嗯,预料中的结果,先结贴吧,多谢大家啦
lwsn 发表于 2016-8-20 22:26 | 显示全部楼层
这个函数中要一执行很可能就会死机。

为什么,哪里的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

879

主题

10435

帖子

4

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