永发信息网

c语言超出数组长度赋值

答案:2  悬赏:20  手机版
解决时间 2021-04-02 16:12
c语言超出数组长度赋值
最佳答案
因为 a 你定义的就是一个三个int长度的数组,你检查a的长度,系统告诉你的是 a 这个类型的长度,就如你获取int类型的长度。
至于越界的问题,C语言是不会检查你下标是否越界的。数组在内存中是一段连续的空间,当你使用下标 0 访问,访问到的是第一个元素,使用 1 访问得到第二个,如此这般。你定义一个3长度的数组,却访问到第9个单位去,这个地方已经不属于你定义的范围了。如果你修改的这个范围外的元素有在其它地方被使用到,就可能发生错误。

这个在你学习指针后会更明白追问  我想知道的是,既然已经定义了数组长度,怎么工再取数组下标为8的时候,这部分空间应该是没有得到系统的分配的,按理就会出现系统错误才对呀追答你怎么知道没有分配呢?比如你再定义个double b,就可能使用了这段空间追问因为我定义界限就是3个int类型长度,难道,只要定义一下数组类型那么它的长度就是不确定的吗?我希望您能给我解释清楚点,谢谢您了!追答定义一个数组,开辟一段内存空间,这段内存空间并不会像被围墙围住一样被封死,合理地利用这个数组,需要程序员自己控制。只定义了这段空间,只有这段空间内的数据对于你当前的程序是合理的,越界的话就不知道你访问到哪里去了,它可能属于机器上任何一个运行着的进程,因为机器上的进程使用的都是这一条内存。如果你修改了你越界访问到的数据,可能会造成未知的错误。

int a[3] = {1,2,3};这样的定义,a表示的是开辟的这一段空间的首地址,[]里的数字表示相对这个地址的偏移量,访问数组是这样进行的

你可以通过sizeof()获得某个类型的大小,但是程序运行时不会去检查下标是否越界。这样的检查是需要耗费资源的,理想的情况下,这样做对于程序运行也没有意义。C/C++没有这样做这样的检查,C# 、java 都是有这样的检查的追问   好的,非常感谢你的耐心解答谢谢你了!
全部回答
C语言规定,数组使用时,不对数组下标越界进行检查。
数组越界有时会导致程序出错,有时是程序的需要。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
这些都是哪些国家的国旗
朱南松这些年在领域里获得了那些荣誉?
玉竹与川芎可相配吗
道奇公羊v85.7加油加多少号
请问炒股票更好赚还是炒期货好赚?
建行速盈怎么把现金全部赎回
两个女朋友都为我打过胎,我会有报应吗?
我爱读书的作文。写个开头或者结尾
一展身手什么意思???
猫D关于命中破甲的问题.
伊朗制裁的内容是什么
在电视上看到那个少儿果汁饮料果倍爽是德国的
陵云两轮汽车什么时候上市多少钱一辆
什么是冒烟测试?
《古墓丽影:崛起》DX12和DX11哪个对帧数提高
推荐资讯
不完全引用的引号内可不可保留问号或叹号
赴巴基斯坦务工怎么样?通过什么渠道
苹果怎么安装两个微信 苹果安装2个微信的方法
我是做湿巾想问一个问题,产品规格是15*20 8
请问一下营山现在最便宜的旅馆价格和位置?还
上饶银行atm(河口镇信州东路信江龙庭)地址好
和英语单词for发同音的单词是什么
请问这个淘宝童装模特叫什么呢?
想问下浙江清华长三角研究院下面浙江闪龙科技
3ds系统更新一直说要重启,怎么解
有哪位知道山东金山寺,给介绍一下。据说是在
冲绳人说中文吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?