初学者问题..帮忙啊!~!
#include <stdio.h>
#include <stdlib.h>
#define init_list_size 100 ; //初始分配的空间
#define listcrinement 10;
typedef struct
{
int *elem ; //存储基地址
int length; //元素的个数
int listsize ; //初始化分配的空间
} sqlist ;
int initlist(sqlist *l)
{
l-> elem=(int *)malloc(init_list_size*sizeof(int));
if(l-> elem==NULL)
return 0;
l-> length=0;
l-> listsize=init_list_size;
return 1;
}
int listinsert(sqlist *l,int i,int e)
{
int j;
if(l-> length> =l-> listsize)
{
l-> elem=(int *)realloc(l-> elem,(listsize+listcrinement)*sizeof(int));
listsize+=listcrinement;
}
for(j=l-> length;j> =i;j--)
{
l-> elem[j]=l-> elem[j-1];
}
l-> elem[i]=e;
l-> length++;
return 1;
}
main()
{
sqlist a;
int j,e,k;
initlist(&a);
for(j=0;j <10;j++)
{
scanf( "%d ",a.elem+j);
a.length++;
}
scanf( "%d ",&e);
listinsert(&a,4,e);
for(k=0;k <=a.length-1;k++)
printf( "%5d ",a.elem[k]);
return 1;
}
有错误..但我不知道为什么错了。..谁能帮个忙...谢谢了//
[解决办法]
#define init_list_size 100 //初始分配的空间
#define listcrinement 10
=============================
#define init_list_size 100 ; //初始分配的空间
#define listcrinement 10;
[解决办法]
有许多程序员不知道在宏定义时是否要加分号,有时,他们以为宏是一条语句,应该要加分号,这就错了。当你知道了宏的原理,你会赞同我为会么不要为宏定义加分号的。看一个例子:
#define MAXNUM 1024;
这是一个有分号的宏,如果我们这样使用:
half = MAXNUM/2;
if ( num < MAXNUM )
等等,都会造成程序的编译错误,因为,当宏展开后,分号也被展进去了,所以造成了程序的错误。
#include <stdio.h>
#include <stdlib.h>
#define init_list_size 100 //初始分配的空间
#define listcrinement 10
typedef struct
{
int *elem ; //存储基地址
int length; //元素的个数
int listsize ; //初始化分配的空间
} sqlist ;
int initlist(sqlist *l)
{
l-> elem=(int *)malloc(init_list_size*sizeof(int));
if(l-> elem==NULL)
return 0;
l-> length=0;
l-> listsize=init_list_size;
return 1;
}
int listinsert(sqlist *l,int i,int e)
{
int j;
if(l-> length> =l-> listsize)
{
l-> elem=(int *)realloc(l-> elem,(l-> listsize+listcrinement)*sizeof(int));
l-> listsize+=listcrinement;
}
for(j=l-> length;j> =i;j--)
{
l-> elem[j]=l-> elem[j-1];
}
l-> elem[i]=e;
l-> length++;
return 1;
}
int main()
{
sqlist a;
int j,e,k;
initlist(&a);
for(j=0;j <10;j++)
{
scanf( "%d ",a.elem+j);
a.length++;
}
scanf( "%d ",&e);
listinsert(&a,4,e);
for(k=0;k <=a.length-1;k++)
printf( "%5d ",a.elem[k]);
return 1;
}
[解决办法]
两个错误
第一
define语句后不能用分号结尾
第二
listsize+=listcrinement;
应该是
l-> listsize+=listcrinement;