C语言如何实现数组越界
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章给大家分享的是有关C语言如何实现数组越界的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。数组越界数组的下标是有范围限制的。数组的下规定是从0开始的,如果数组有n个元素
千家信息网最后更新 2026年11月01日C语言如何实现数组越界
这篇文章给大家分享的是有关C语言如何实现数组越界的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
数组越界
数组的下标是有范围限制的。
数组的下规定是从0开始的,如果数组有n个元素,最后一个元素的下标就是n-1。
所以数组的下标如果小于0,或者大于n-1,就是数组越界访问了,超出了数组合法空间的访问。
C语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味着程序就是正确的,
二维数组的行和列也可能存在越界。
所以程序员写代码时,最好自己做越界的检查
#includeint main(){ int i = 0; int arr[] = {1,2,3,4,5,6,7,8,9,10}; for(i=0; i<=12; i++)//在这里数组越界访问了,但这是主要问题吗? { arr[i] = 0; printf("haha\n"); } return 0;}
让我们公布答案吧!
这段代码的bug是死循环
很抱歉满屏的haha吵到了你的眼睛(手动狗头)
是不是难以想象?请带着疑惑看看下文解释
有以下几个规则:
i和arr是局部变量
局部变量是放在栈区上的
栈区上内存的使用习惯是:先使用高地址处空间再使用地地址处空间
数组随着下标的增长,地址由低到高变化
示意图如下

"由低到高"和"由高到低"相遇了。
arr [12] = 0; 间接改变了i,相当于i = 0;
这样一来i又从0依次变大再回归0,实现了死循环的局面
至于空白格子代表的局部变量储存时相间隔的的字节个数是如何确定的,这得看不同编译器了。vs编译器是空两格,其他编译器是什么样的,感兴趣可以自己探索哦。
感谢各位的阅读!关于"C语言如何实现数组越界"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
数组
下标
编译器
编译
语言
变量
地址
就是
局部
空间
代码
元素
内容
更多
程序
篇文章
循环
检查
不同
不错
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海喔噻互联网科技有限公司
蓝思科技飞鸽互联网
云信互联网科技有限公司
互联网 科技
北京互联网科技公司
华中科技大学互联网
互联网金融 科技创新
西藏七维空间互联网科技有限公司
全球顶尖互联网科技公司
湖北码尼互联网科技有限公司电话
互联网与医疗科技
浙南科技城互联网大厦建设工程
朱啸虎曾投资哪些互联网科技企业
互联网公司高科技产品
广州富喜互联网络科技
城市宝互联网科技有限公司
扫呗互联网科技有限公司
云鲸互联网络科技有限公司
互联网时代高科技布局
瑞安市蟠桃会互联网科技有限公司
互联网科技巨头监管
A股互联网金融科技公司
网络科技有限互联网
互联网公司 科技公司
上海致骋互联网科技
居家互联网科技有限公司
智腾互联网科技有限公司
恒生科技指数 中概互联网
银川新华互联网科技学校招聘
伍佰万互联网科技是干嘛的