首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2013-10-24 
关于C语言顺序表实现的一些小问题。typedef struct{ElemType *elemint lengthint listsize}SqListSqLis

关于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);

热点排行