找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于C语言数组的问题

[复制链接]
跳转到指定楼层
楼主
如图,我设置了一个数组




在运行时,我把I设成32,编译后运行正常,无错误。请问这个怎么回事,数组最大16,不是超出范围了吗
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:277550 发表于 2021-10-29 11:08 | 只看该作者

C语言 本身不帮你检测是否走出范围的,要程序员掌控的。
回复

使用道具 举报

板凳
ID:975955 发表于 2021-10-29 11:31 | 只看该作者
数组名类似一个指针,也就是起始地址,后面应用的话,相当于在起始地址上加偏移地址,超出数组范围可以的,要自己写程序注意
回复

使用道具 举报

地板
ID:883242 发表于 2021-10-29 12:48 | 只看该作者
这是你走运,数组后面没有其他数据,而且xdata空间足够,所以越界没出现错误。在电脑上面这么做试试,八成要崩溃。
回复

使用道具 举报

5#
ID:57657 发表于 2021-10-29 13:27 | 只看该作者
单片机运行时不检查数组是否越界,一但越界可能会导致其他数组或变量的值被破坏。
回复

使用道具 举报

6#
ID:976079 发表于 2021-10-29 20:19 | 只看该作者
会溢出啊,运行正常是你没测试出来。会写到其他内存去,只不过可能那段内存没有其他变量用,就没有造成错误。
回复

使用道具 举报

7#
ID:415064 发表于 2021-10-30 20:15 | 只看该作者
你查看下内存分布,ARR[2][2] ={{0,1},{2,3}},你同样可以用ARR[3]调用,结果是3。这两个是同一个地址
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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