提示数组越界操作,什么意思
3个回答
展开全部
1、什么是数组访问越界?
我们通过数组的下标来得到数组内指定索引的元素。这称作对数组的访问。
如果一个数组定义为有n个元素,那么,对这n个元素(下标为0 到
n-1的元素)的访问都合法,如果对这n个元素之外的访问,就是非法的,称为“越界。
数组占用了一段连续的内存空间。然后,我们可以通过指定数组下标来访问这块内存里的不同位置。因此,当你的下标过大时,访问到的内存,就不再是这个数组“份内”的内存。你访问的,将是其它变量的内存了。
2、访问越界会出现什么结果?
首先,它并不会造成编译错误!就是说,C,C++的编译器并不判断和指出你的代码“访问越界”了。一个明明是错误的东西,就这样“顺利”地通过了编译。数组访问越界在运行时,它的表现是不定的,有时似乎什么事也没有,程序一直运行(当然,某些错误结果已造成);有时,则是程序一下子崩溃。因此在使用数组时,一定要在编程中判断是否越界以保证程序的正确性。
常见的错误就是数组的size值和下标访问值弄错,数组的下表是从0开始的,最大的访问值是size-1。
3、解决办法
由于数组的元素个数默认情况下是不作为实参内容传入调用函数的,因此会带来数组访问越界的相关问题,解决问题方法,可以用传递数组元素个数的方法即:用两个实参,一个是数组名,一个是数组的长度。
举例:
#include
void PutArray(int *p, int length)
{
// 在此判断入口参数p和length的有效性
……
for(int
i=0;i<length;i++)
printf("%d\t",p[i]);
}
void main()
{
int a[3]={2,4,6} ;
printf("数组a[3]调用函数PutArray的结果为:\n");
PutArray(a,
sizeof(a)/sizeof(a[0]));
}
我们通过数组的下标来得到数组内指定索引的元素。这称作对数组的访问。
如果一个数组定义为有n个元素,那么,对这n个元素(下标为0 到
n-1的元素)的访问都合法,如果对这n个元素之外的访问,就是非法的,称为“越界。
数组占用了一段连续的内存空间。然后,我们可以通过指定数组下标来访问这块内存里的不同位置。因此,当你的下标过大时,访问到的内存,就不再是这个数组“份内”的内存。你访问的,将是其它变量的内存了。
2、访问越界会出现什么结果?
首先,它并不会造成编译错误!就是说,C,C++的编译器并不判断和指出你的代码“访问越界”了。一个明明是错误的东西,就这样“顺利”地通过了编译。数组访问越界在运行时,它的表现是不定的,有时似乎什么事也没有,程序一直运行(当然,某些错误结果已造成);有时,则是程序一下子崩溃。因此在使用数组时,一定要在编程中判断是否越界以保证程序的正确性。
常见的错误就是数组的size值和下标访问值弄错,数组的下表是从0开始的,最大的访问值是size-1。
3、解决办法
由于数组的元素个数默认情况下是不作为实参内容传入调用函数的,因此会带来数组访问越界的相关问题,解决问题方法,可以用传递数组元素个数的方法即:用两个实参,一个是数组名,一个是数组的长度。
举例:
#include
void PutArray(int *p, int length)
{
// 在此判断入口参数p和length的有效性
……
for(int
i=0;i<length;i++)
printf("%d\t",p[i]);
}
void main()
{
int a[3]={2,4,6} ;
printf("数组a[3]调用函数PutArray的结果为:\n");
PutArray(a,
sizeof(a)/sizeof(a[0]));
}
展开全部
1.Fortran90 是语言标准。不是软件,你不能说“在FORTRAN90上面可以运行的代码”。
2.全世界有几十家编译器厂商,书写了支持 Fortran90 语法规范的多种编译器产品。其中有 Compaq Visual Fortran,Intel Visual Fortran,NAG Fortran,GFortran ,Silverfrost Ftn95 等等。
3.Intel Visual Fortran 也是一种 Fortran90 编译器。当然,它还支持 Fortran95 和部分 Fortran2003 语法。
4.你的代码没有语法错误,可在 Intel Visual Fortran 上正常编译链接。
5.由于缺少数据文件:GHA.TXT,因此,我无法帮你测试是否有执行错误。
6.DEBUG ASSETION FAILED 一般是由于编译环境的操作问题引起的。尝试清理一下工程,重新编译链接,然后运行(run without debug)。
2.全世界有几十家编译器厂商,书写了支持 Fortran90 语法规范的多种编译器产品。其中有 Compaq Visual Fortran,Intel Visual Fortran,NAG Fortran,GFortran ,Silverfrost Ftn95 等等。
3.Intel Visual Fortran 也是一种 Fortran90 编译器。当然,它还支持 Fortran95 和部分 Fortran2003 语法。
4.你的代码没有语法错误,可在 Intel Visual Fortran 上正常编译链接。
5.由于缺少数据文件:GHA.TXT,因此,我无法帮你测试是否有执行错误。
6.DEBUG ASSETION FAILED 一般是由于编译环境的操作问题引起的。尝试清理一下工程,重新编译链接,然后运行(run without debug)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组长度为3 你想访问第四个的意思
数组长度为3 你想访问第-1个的意思
数组长度为3 你想访问第-1个的意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询