打印
[疑难问答]

程序是否有问题啊

[复制链接]
1309|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hfdy01|  楼主 | 2016-9-20 08:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


void test_fun(void)
{
char a[10];
// 指针b指到数组a 顶端的下一个 byte
//
char*b=a+10
//将数组 a的每个元素设为100
//
do
{
b--;
b[0]=100;
} while(b>=a);
}
沙发
androidbus| | 2016-9-20 08:48 | 只看该作者
我试一下看看吧。。

使用特权

评论回复
板凳
litengg| | 2016-9-20 08:51 | 只看该作者
楼主你运行的结果就是将数组a赋值成100(十进制)

使用特权

评论回复
地板
qiangweii| | 2016-9-20 08:55 | 只看该作者
这个函数中要一执行很可能就会死机啊

使用特权

评论回复
5
hfdy01|  楼主 | 2016-9-20 08:59 | 只看该作者
坐等答案啊

使用特权

评论回复
6
hfdy01|  楼主 | 2016-9-20 09:00 | 只看该作者
乍一看还真是看不出来,看看楼上的分析,真是长见识,学习了呀

使用特权

评论回复
7
feiqi1| | 2016-9-20 09:05 | 只看该作者
除了char*b=a+10这句后面应该有分号,别的应该没有什么问题。

使用特权

评论回复
8
shashaa| | 2016-9-20 09:09 | 只看该作者
当b一直减到a时,因为while循环的条件是b>=a,所以最后一次进入循环时b会等于
(a-1)当把数组a开头的上一个元素设为100会发生什么事呢

使用特权

评论回复
9
xia00| | 2016-9-20 09:13 | 只看该作者
你要实现什么功能,看看大家能给出什么优化代码么

使用特权

评论回复
10
CallReceiver| | 2016-9-20 09:15 | 只看该作者
qiangweii 发表于 2016-9-20 08:55
这个函数中要一执行很可能就会死机啊

为什么,哪里的问题呢??

使用特权

评论回复
11
boy1990| | 2016-9-20 09:19 | 只看该作者
看看,应该是预料中的结果。

使用特权

评论回复
12
sourceInsight| | 2016-9-20 09:21 | 只看该作者
shashaa 发表于 2016-9-20 09:09
当b一直减到a时,因为while循环的条件是b>=a,所以最后一次进入循环时b会等于
(a-1)当把数组a开头的上一 ...

这是个简单的逻辑错误啊

使用特权

评论回复
13
xiuxiu6581772| | 2016-9-20 13:50 | 只看该作者
同意8楼



减到最后一次  b 的地址 指向的不在是 a的范围了。  而是a-1   会有不确定的情况发生。

使用特权

评论回复
14
kmcfly| | 2016-9-20 15:51 | 只看该作者
debug一下,看下堆栈 啥代码都现原形了

使用特权

评论回复
15
ddllxxrr| | 2016-9-20 20:43 | 只看该作者
这个一看就知道有问题,具体怎么回事?还得看b的声明

使用特权

评论回复
16
icecut| | 2016-9-20 21:21 | 只看该作者
高版本 vc 不支持指针比较大小

使用特权

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

本版积分规则

78

主题

1578

帖子

1

粉丝