找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于C语言数组的问题

查看数: 2094 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-10-29 10:01

正文摘要:

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

回复

ID:415064 发表于 2021-10-30 20:15
你查看下内存分布,ARR[2][2] ={{0,1},{2,3}},你同样可以用ARR[3]调用,结果是3。这两个是同一个地址
ID:976079 发表于 2021-10-29 20:19
会溢出啊,运行正常是你没测试出来。会写到其他内存去,只不过可能那段内存没有其他变量用,就没有造成错误。
ID:57657 发表于 2021-10-29 13:27
单片机运行时不检查数组是否越界,一但越界可能会导致其他数组或变量的值被破坏。
ID:883242 发表于 2021-10-29 12:48
这是你走运,数组后面没有其他数据,而且xdata空间足够,所以越界没出现错误。在电脑上面这么做试试,八成要崩溃。
ID:975955 发表于 2021-10-29 11:31
数组名类似一个指针,也就是起始地址,后面应用的话,相当于在起始地址上加偏移地址,超出数组范围可以的,要自己写程序注意
ID:277550 发表于 2021-10-29 11:08

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

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

Powered by 单片机教程网

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