永发信息网

c语言超出数组长度赋值

答案:2  悬赏:20  手机版
解决时间 2021-04-02 16:12
  • 提问者网友:嘚啵嘚啵
  • 2021-04-01 15:54
c语言超出数组长度赋值
最佳答案
  • 五星知识达人网友:罪歌
  • 2021-04-01 17:27
因为 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 都是有这样的检查的追问   好的,非常感谢你的耐心解答谢谢你了!
全部回答
  • 1楼网友:青灯有味
  • 2021-04-01 19:03
C语言规定,数组使用时,不对数组下标越界进行检查。
数组越界有时会导致程序出错,有时是程序的需要。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯