55问答网
所有问题
C语言为什么不检查数组越界
如题所述
举报该问题
推荐答案 2018-03-23
一方面是为了运行效率。
另外最主要,C语言的特征就是直接操作地址,自由度高,指针就是为此存在,检查越界会限制程序员的自由度。所以自由是要付出代价的。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://55.wendadaohang.com/zd/IR4FQQeFcG8cFFcFQ4L.html
其他回答
第1个回答 2018-03-23
检查数组越界比较复杂,因为涉及许多的间接访问方式,比如用指针访问
检查数组越界在编译阶段由于上边原因很难做到;在程序运行阶段就更难做到了。为减少这方面带来的编译器和运行环境方面的开销,这部分工作就省去不做了。
但不拒绝在操作系统层面做这方面的检查、在c语言调试环境的Debug也可以做这方面工作,你也可以利用c语言编程,编写自己专门检测数组越界的代码,做到预设的提示、更正等处理。
本回答被网友采纳
第2个回答 2018-03-23
浪费内存,降低运行效率
第3个回答 2018-03-23
为了速度有效率。 每次检查都是需要消耗 cpu 资源的。
相似回答
关于
C语言
,
为什么
编译器不对
数组
的
越界
进行
检查
?
答:
为了提高代码效率。
C语言
跟Java不同,C的内存管理交由用户处理,Java是语言自己处理。但是,如果不是核心系统开发,一般体现不出两者的内存处理的代码之间效率差别。
c语言
超出
数组
长度赋值
答:
因为 a 你定义的就是一个三个int长度的
数组
,你
检查
a的长度,系统告诉你的是 a 这个类型的长度,就如你获取int类型的长度。至于
越界
的问题,
C语言
是不会检查你下标是否越界的。数组在内存中是一段连续的空间,当你使用下标 0 访问,访问到的是第一个元素,使用 1 访问得到第二个,如此这般。你定...
C语言
变量生命周期问题设计
数组越界
答:
C语言不检查数组越界和指针,
这个程序员负责的事情,编译时只检查语法有没有错误
。而且并不是一越界就异常的,异常可能会在将来发生,或者这次越界没有破坏关键数据。你要先打印数据,再增加global,否则就会输出下一个值,但是你却没有赋值
C 语言中
编译器
为何不检测数组
下标
越界
问题
答:
如果检测长度,那么就相当与限制的指针的长度,这是不合理的。
2. 没有效率,需要付出代价
。具体:最早的C编译器并不检查下标,而最新的编译器依然不对它进行检查。这项任务之所以很困难,是因为下标引用可以作为任意的指针,而不仅仅是数组名。作用于指针的下标引用的有效性既依赖于该指针当时恰好指向什么...
c语言
编译系统会对
数组越界检查
吗?如何才算越界?
答:
不会对
数组
的
越界
进行
检查
。例如:int s[3]={1,2,3};如果你访问s[0],s[1],s[2]完全正确,如果你要访问s[3],这就算越界了,因为数组最大下标是2,编译系统也不会报错,但后果自负。至于
为什么
我不清楚。
大家正在搜
c语言数组越界怎么处理
数组越界会出现什么
数组越界什么意思
数组越界有什么后果
什么是数组下标越界
数组越界怎么处理
怎么防止数组越界
数组越界怎么判断
c语言怎么输出数组
相关问题
为什么C语言检查数组访问越界会这么难
C 语言中编译器为何不检测数组下标越界问题
c语言编译系统会对数组越界检查吗?如何才算越界?
c语言是如何检测到数组越界的
为什么C语言中数组下标越界不报错
C语言 为什么一运行就会报数组越界?
如何解决c语言数组越界问题?
C语言变量生命周期问题设计数组越界