c语言中,定义5个长度的字符数组,输入7个字符长度的字符串,为什么不提示越界

如题所述

C语言是低级的高级语言,不会提示越界,你可以在定义5个长度呃字符数组里面输入7个字符,但是定义长度并不是没用的,编译器会专门开辟5个字符长度留给这个数组,是专用的,因此你输入7个字符后,后两个字符其实是超标领养,用了别人家的资源(可能占用了其他变量的空间),并且很容易就没娘要了(容易出错)。如果程序简单,或许出错的几率比较小,例如你只定义了这个数组的话,也不会有别的东西来干扰他,他也不会干扰别的东西,但是程序一旦复杂起来,内存空间比较拥挤,那么出错是难免的。因此有时我们要自己去实现越界提示这个功能,但是显然这样会降低程序的效率。一楼的答案也值得参考,他说的我就不说了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-06
仔细了解一下数组的内部实现,实际上数组的概念是建立在指针访问的基础上的,所谓的越界不越界,是程序员自己的定义,对于编译器来说,没有数组的概念,只有按照指针和偏移量进行地质访问的概念,只要相关的地址能访问到,就直接访问,所以也就不存在越界不越界的问题
相似回答