比如下标越界那个例子中的 i 我定义为10当在VS2013环境下我输入的下标值为12在输出arr[12] 20 的同时会

当前位置:永利皇宫登录网址 > 永利皇宫官方注册 > 比如下标越界那个例子中的 i 我定义为10当在VS2013环境下我输入的下标值为12在输出arr[12] 20 的同时会
作者: 永利皇宫登录网址|来源: http://www.txsxyk.com|栏目:永利皇宫官方注册

文章关键词:永利皇宫登录网址,下标越界

  因为编译器不会自动检测你的数组下标是否越界而是把这个任务交给了程序员自己所以我们在写程序引用数组元素时一定注意不要让数组的下标越界。

  在初始化数组(给数组元素赋值)时初始化(赋值)元素的个数超过了数组定义时元素的个数。这里的元素个数就是在定义数组时那个方框框里的数字对于多维数组来说元素个数 每个方框框里的数字之积。

  以上两张图片是在VS2013里面的运行结果两次输入的下标都会越界但为什么第一张图报错了数组下标越界而第二张没有。

  这是因为VS2013这个编译器在处理数组下标时只认为当引用的下标等于数组元素个数时下标越界可能是怕初学者把数组下标当成是以0开始的吧别的情况别不回去检测和处理当我输入的值大于等于11程序都不会报错。

  这是因为VC6.0里认为当引用数组元素时若数组的下标比数组的元素个数大 1 或大 2时下标越界,。而对于其余的情况不予检测。

  数组定义为count[100],则数组共有100个元素。永利皇宫官方注册这里初始化时for循环一共循环了101次所以是要给数组初始化101个元素的值而数组只有100个元素这样就导致了内存溢出。

  这是在VC6.0环境下编译链接运行都可以但同样会出错。

  因此虽然数组在C语言中是个很强大的东西但在应用时一定要注意千万不要出现下标越界的情况因为这样会造成不可想象的错误。永利皇宫官方注册比如下标越界那个例子中的 i 我定义为10当在VS2013环境下我输入的下标值为12在输出arr[12] 20 的同时会把i的值也改为20VS中定义的两个变量分配内存时会在两个变量的内存空间之间隔出两个空间空间大小为整形大小这样别处再用到 i 时 会得到一个错误的 i 的值可能机会导致一连串的错误致使结果与预期相差甚远。同时在初始化数组时要注意不要初始化的元素个数不要超出了定义时的个数。

网友评论

我的2016年度评论盘点
还没有评论,快来抢沙发吧!