读书人

关于C语言顺序表实现的一些小疑点

发布时间: 2013-10-24 18:27:24 作者: rapoo

关于C语言顺序表实现的一些小问题。
typedef struct{
ElemType *elem;
int length;
int listsize;
}SqList;

SqList L;

SqList* InitiaList() {
L.elem=(ElemType *)malloc(LIST_SIZE*sizeof(ElemType));
if(!L.elem)
{
printf("溢出,扩展空间失败!");
return 0;
}
L.length=0;/*长度为0*/
L.listsize=LIST_SIZE;/*分配的内存空间为LIST_SIZE*/
return &L;
}


这上面的
return &L ;这个语句是将L的地址返回给谁啊。。。主函数里是直接调用这个函数的 c语言
[解决办法]
你看主函数哪个调用这个函数就是返回给谁,如果没有赋值操作就是初始化L用的,
这函数只是初始化一个全局变量L,被把L的地址返回,返回值用没用没关系
[解决办法]
返回L的引用
[解决办法]
把调用的部分代码贴上来看看

引用:
typedef struct{
ElemType *elem;
int length;
int listsize;
}SqList;

SqList L;

SqList* InitiaList() {
L.elem=(ElemType *)malloc(LIST_SIZE*sizeof(ElemType));
if(!L.elem)
{
printf("溢出,扩展空间失败!");
return 0;
}
L.length=0;/*长度为0*/
L.listsize=LIST_SIZE;/*分配的内存空间为LIST_SIZE*/
return &L;
}


这上面的
return &L ;这个语句是将L的地址返回给谁啊。。。主函数里是直接调用这个函数的

[解决办法]
嗯,返回L的引用。类似于:

typedef struct
{
int i;
}s;

s st;

s* initS()
{
st.i = 0;

return &st;
}

s* st1 = initS();
printf("%d\n",st1->i);

读书人网 >C语言

热点推荐