c哪里编写错误呢?

来源:百度知道 编辑:UC知道 时间:2024/08/22 06:36:23
#include "stdio.h"
#include "malloc.h"
int maxlen=8;

typedef int elemtype;
typedef struct node
{elemtype data;
struct node *next;
}linklist;

int insert_sqlist(int i,elemtype x,elemtype v[],int *n_pointer)
{

int j,n;
n=*n_pointer;
if (n>=maxlen)
{ printf("error");return 0;}
else
if( (i<0)||(i>maxlen))
{printf("wrong");return 0;}
else
for(j=n;j>=i;j--)
v[j]=v[j-1];
v[j]=x;
n++;
*n_pointer=n;
return 1;
}
void main()
{ elemtype v[]={1,2,3,4,5,6};
elemtype x=7;
int a=2;
int *pointer;
int t=6;
*pointer=t;

insert_sqlist(a,x,v,pointer);
}

实现在一串已知数组中第i个位置添加x元素,没有error,但不能运行。
请问哪里错了,能否详细解释,谢谢!
我的v【】没有限制数组个数啊
如果要改,应该怎么改呢?

for(j=n;j>=i;j--)
v[j]=v[j-1];
中n=6时,v[6]越界错误,v长度为6最大index为5(0为第一个)

【】没有限制数组个数,但是他会按照你初始的个数来固定长度
你建个大一点数组吧 比如长度为10的