求助:变长数组和数组越界
在运行线性表插入数据时,程序运行完出现非法操作。将int a[]={11,22,33,44,55};修改为int a[10]={11,22,33,44,55};就不会出现非法错误。
现在有些头大,请大家多指点几招避免因变长数组引发数组越界而出现非法操作方法。以下是调试代码。
#include <stdio.h>
void Insert(int a[],int &n,int i,int x)
{
int j;
//检验插入元素是否合法
if(i<1 || i>=n+1)
printf("i值错误!\n");
else
{
//数组元素后移,为插入元素空出位置
for(j=n-1;j>=i-1;j--)
{
a[j+1]=a[j];
}
//插入数据元素
a[i-1]=x;
//个数加1
n++;
}
}
int main()
{
//定义数组
int a[]={11,22,33,44,55};
//定义循环变量和数组长度
int i,n;
n=5;
//执行插入操作
Insert(a,n,3,8);
//打印数据
for(i=0;i<n;i++)
{
printf("%d,",a[i]);
}
printf("\n");
return 0;
}
[ 本帖最后由 逐渐学习 于 2010-12-22 11:20 编辑 ]