C语言如何实现数组越界
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章给大家分享的是有关C语言如何实现数组越界的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。数组越界数组的下标是有范围限制的。数组的下规定是从0开始的,如果数组有n个元素
千家信息网最后更新 2025年01月24日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安全错误
数据库的锁怎样保障安全
最成功的一件是软件开发
网络安全培训策划方案模板
鲲鹏服务器价格多少
互联网科技对人类生活的影响
烟草科技创新互联网 专卖
尼瑞克戒烟贴软件开发
常德跑腿app软件开发费用
数据库dll 如何连接
进行一个软件开发项目的财务分析
中教数据库与知网哪个好
星源云池软件开发
excel表查找空格数据库
江苏戴尔服务器虚拟化技术
现代战舰一直在从服务器同步数据
客户机访问服务器的方法是
数据库系统概论 第五版
铜梁区一站式软件开发流程公司
mysql数据库项目式教程
上海智能化网络技术开发行业标准
江西中汇网络技术公司官网
北京服务器风扇质量保障
网络安全证书被删除
辽宁信息化软件开发有哪些
不用虚拟服务器可以做网站吗
pubg换服务器段位会重置吗
超融合服务器管理平台
php数据库查询输出数组
重庆浪潮服务器维修点
辽宁邮箱提取外贸软件开发
网络安全关键卡控