读书人

一维数组进行访问时越界会出现什么状况

发布时间: 2012-03-20 14:01:11 作者: rapoo

一维数组进行访问时越界会出现什么状况
C语言里对一维数组进行访问时越界会出现什么状况?比如声明一个一维数组a[10],那么a[100]的结果怎么是4942,这个数是随机的吗?

[解决办法]
是的,取决于内存环境的状态,
但是请坚决不要这么做
[解决办法]
是~~~~(想回个是内容太短了...)
[解决办法]
结果是不可预见的(读到的是内存中的值,也可能是别的变量的值),也可能引起程序崩溃

[解决办法]

探讨

结果是不可预见的(读到的是内存中的值,也可能是别的变量的值),也可能引起程序崩溃

[解决办法]
探讨

引用:

结果是不可预见的(读到的是内存中的值,也可能是别的变量的值),也可能引起程序崩溃


数组中的值在内存中连续存放

a[1] 相当于*(a+1)

数组的名字a是数组的开始地址的

[解决办法]
Access Violation·~~~我经常会发现这个错误,主要来源于越界和使用了内存指向不正确的指针。
[解决办法]
《深入解析Windows操作系统-Windows Internals》 内存管理
[解决办法]
#include<stdio.h>
main()
{
int a[6],i;
for(i=0;i<6;i++)
a[i]=i;
for(i=0;i<7;i++)
printf("%d\n",a[i]);
}
=========================================================================
运行结果
0
1
2
3
4
5
1638280
===================
随机内存中的一个值吧
[解决办法]
就当是不可控制的吧,这东西不用挖太深
[解决办法]
探讨

是的,取决于内存环境的状态,
但是请坚决不要这么做

读书人网 >C++

热点推荐