找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1165|回复: 9
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
用的是vc++6.0

无标题.png (134.16 KB, 下载次数: 27)

无标题.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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已经指向数组尾了)。
回复

使用道具 举报

5#
ID:568565 发表于 2019-8-23 07:39 来自手机 | 只看该作者
数组要赋初值吧,然后在for循环里加上一行
回复

使用道具 举报

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

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

使用道具 举报

7#
ID:568017 发表于 2019-8-23 10:01 | 只看该作者
chenyinhu 发表于 2019-8-23 07:39
数组要赋初值吧,然后在for循环里加上一行

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

10#
ID:462827 发表于 2019-8-23 10:44 | 只看该作者
寒山寺小生 发表于 2019-8-23 10:00
主要是我指向的地址一样,为什么值会变

你理解力有些差啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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