为什么这个程序没有错误,但是不能运行
我编的顺序表插入的程序,VC中没有错误和警告,但是运行的时候没有结果,而且vc会说应用程序错误,内存不能为written.但是,我在win-tc中编译成功看到结果了的
#include "stdio.h "
#define maxsize 100
typedef int ELEMTYPE;
typedef struct{
ELEMTYPE data[maxsize];
int len;
}seqlist;
void Insertlist(seqlist *la,ELEMTYPE x,int i);
void main()
{
ELEMTYPE x;
int i,j;
int num=1;
seqlist *la;
char stop;
la-> len=1; //这里会说la在使用前没有定义,但是他又不报错
printf( "Please enter number and position\n ");
scanf( "%d%d ",&x,&i);
printf( "Enter datas\n ");
for(j=1;;j++)
{
scanf( "%3d ",&la-> data[j-1]);
la-> len++;
if((stop=getchar())== 's ')
break;
}
Insertlist(la,x,i);
for(j=1;j <la-> len;j++)
{
printf( "%3d ",la-> data[j-1]);
num++;
if(num%10==0)
printf( "\n ");
}
}
void Insertlist(seqlist *la,ELEMTYPE x,int i)
{
int k;
if(i <1||i> la-> len+1||la-> len> =maxsize)
printf( "Position Error\n ");
else
{
for(k=la-> len;k> =i;k--)
la-> data[k]=la-> data[k-1];
la-> data[i-1]=x;
la-> len+=1;
}
}
[解决办法]
la只是被定义为一个指向seqlist类型数据的一个指针变量,但是la所指向的数据空间没有被分配,所以la-> len被认为是非法操作,你应该先建立一个seqlist的结构体,如seqlist la1;
然后让la指向la1,la=&la1