请问为什么会出现这样的错误 求指教
错误显示:error C2275: 'SL' : illegal use of this type as an expression
我的代码如下:
#include<stdio.h>
#include<stdlib.h>
typedef int SLDataType;
#define INCREMENT 1000
typedef struct SeqList
{
SLDataType* a;
int size;
int capacity;
}SL;
void SeqListInit(SL* ps)
{
ps->size=0;
ps->capacity=0;
ps->a=NULL;
}
void SeqListCheckCapacity(SL* ps)
{
if(ps->size==ps->capacity)
{
ps->a=(SLDataType*)realloc(ps->a,(ps->capacity+INCREMENT)sizeof(SLDataType));
}
}
void SeqListPushBack(SL ps,int x)
{
SeqListCheckCapacity(SL* ps);
ps->a[ps->size]=x;
ps->size++;
}
int main()
{
SL sl;
int i;
SeqListPushBack(&sl,0);
SeqListPushBack(&sl,1);
SeqListPushBack(&sl,2);
SeqListPushBack(&sl,3);
SeqListPushBack(&sl,4);
for(i=0;i<sl.size;i++)
{
printf("%d ",&sl);
}
printf("/n");
return 0;
}
(这是一个顺序表尾插法的代码)
void SeqListPushBack(SL *ps,int x)
{
SeqListCheckCapacity(ps);
ps->a[ps->size]=x;
ps->size++;
}
main函数里面你好像没有初始化sl吧!
修改处见注释,供参考:
#include<stdio.h>
#include<stdlib.h>
typedef int SLDataType;
#define INCREMENT 1000
typedef struct SeqList
{
SLDataType* a;
int size;
int capacity;
}SL;
void SeqListInit(SL* ps)
{
ps->size=0;
ps->capacity=0;
ps->a=NULL;
}
void SeqListCheckCapacity(SL* ps)
{
if(ps->size==ps->capacity)
{
ps->a=(SLDataType*)realloc(ps->a,(ps->capacity+INCREMENT)*sizeof(SLDataType));
ps->capacity += INCREMENT; //修改
}
}
void SeqListPushBack(SL* ps,int x)
{
SeqListCheckCapacity(ps); //修改
//SeqListCheckCapacity(SL* ps);
ps->a[ps->size]=x;
ps->size++;
}
int main()
{
SL sl;
int i;
SeqListInit(&sl); //缺少表的初始化 修改
SeqListPushBack(&sl,0);
SeqListPushBack(&sl,1);
SeqListPushBack(&sl,2);
SeqListPushBack(&sl,3);
SeqListPushBack(&sl,4);
for(i=0;i<sl.size;i++)
{
printf("%d ",sl.a[i]); //修改
//printf("%d ",&sl);
}
printf("\n"); //修改
//printf("/n");
return 0;
}