找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1777|回复: 6
收起左侧

关于C语言数组的问题

[复制链接]
ID:450037 发表于 2021-10-29 10:01 | 显示全部楼层 |阅读模式
1.PNG 如图,我设置了一个数组

捕获.PNG


在运行时,我把I设成32,编译后运行正常,无错误。请问这个怎么回事,数组最大16,不是超出范围了吗
回复

使用道具 举报

ID:277550 发表于 2021-10-29 11:08 | 显示全部楼层

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

ID:57657 发表于 2021-10-29 13:27 | 显示全部楼层
单片机运行时不检查数组是否越界,一但越界可能会导致其他数组或变量的值被破坏。
回复

使用道具 举报

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

使用道具 举报

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 单片机教程网

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