读书人

菜鸟有关问题.帮忙啊

发布时间: 2012-02-15 12:09:44 作者: rapoo

初学者问题..帮忙啊!~!
#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;

读书人网 >C语言

热点推荐