找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2495|回复: 9
收起左侧

为什么我输出一个值,这个值会累加,用的是vc++ 6.0

[复制链接]
ID:568017 发表于 2019-8-21 10:21 | 显示全部楼层 |阅读模式
用的是vc++6.0

无标题.png
回复

使用道具 举报

ID:138097 发表于 2019-8-22 08:17 | 显示全部楼层
清零啊,你运行完一次需要把变量清零啊
回复

使用道具 举报

ID:602825 发表于 2019-8-22 19:09 | 显示全部楼层
这十个数没有赋值到数组a里
回复

使用道具 举报

ID:462827 发表于 2019-8-22 23:54 | 显示全部楼层
第二个for循环之前,要重新将指针p指向数组首地址才行啊(因为前面接收完数据后p已经指向数组尾了)。
回复

使用道具 举报

ID:568565 发表于 2019-8-23 07:39 来自触屏版 | 显示全部楼层
数组要赋初值吧,然后在for循环里加上一行
回复

使用道具 举报

ID:568017 发表于 2019-8-23 10:00 | 显示全部楼层
hantu 发表于 2019-8-22 23:54
第二个for循环之前,要重新将指针p指向数组首地址才行啊(因为前面接收完数据后p已经指向数组尾了)。

主要是我指向的地址一样,为什么值会变
回复

使用道具 举报

ID:568017 发表于 2019-8-23 10:01 | 显示全部楼层
chenyinhu 发表于 2019-8-23 07:39
数组要赋初值吧,然后在for循环里加上一行

主要是我指向的地址一样,为什么值会变
回复

使用道具 举报

ID:458699 发表于 2019-8-23 10:03 | 显示全部楼层
你这个指针在给数组赋完值后就指到数组后面的位置了,和数组没有直接关系了,你循环打印的是你根本不知道的内存区域的值。你那个值会累加是因为你指针刚好指向数组后面的内存,这个编译器编译的时候给你优化了,它认为你循环打印是有意义的,所以帮你优化打印出了你循环的次数,如果你换一个没有自动帮你优化代码的编译器,就是一个固定的垃圾数了。或者你再把指针往后挪一下,他就不会帮你和前面联系起来,就不会“自作聪明”地优化了,打印的也就是个固定的垃圾数了。
回复

使用道具 举报

ID:589552 发表于 2019-8-23 10:42 | 显示全部楼层
指针在赋值完成后,已经指向数组后面(超出数组域)的内存空间了,有可能刚好系统将这个内存分配为变量 i了
回复

使用道具 举报

ID:462827 发表于 2019-8-23 10:44 | 显示全部楼层
寒山寺小生 发表于 2019-8-23 10:00
主要是我指向的地址一样,为什么值会变

你理解力有些差啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表