C语言初始化错误怎么办,结构体变量的初始化错误

在Linux下编写程序SqList.c如下

/**

*程序功能说明:顺序表初始化

*/

#include

#include

/* In common use */

#define OVERFLOW -1

#define OK 1

#define LIST_INIT_SIZE 100 /* 线性表存储空间的初始分配量 */

#define LISTINCREMENT 10 /* 线性表存储空间的分配增量 */

typedef int ElemType;

typedef int Status;

typedef struct{

ElemType *elem; /* 存储空间基址 */ /*a、问题在这里*/

int length; /* 当前长度 */

int listsize; /* 当前分配的存储容量(以sizeof(ElemType)为单位) */

}SqList;

Status InitList_Sq (SqList *L)

{

/* 构造一个空的线性表L。*/

(*L).elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));

if (! (*L).elem) exit(OVERFLOW); /* 存储分配失败 */

(*L).length = 0; /* 空表长度为0 */

(*L).listsize = LIST_INIT_SIZE; /* 初始存储容量 */

return OK;

}/*InitList_Sq*/

int main()

{

int result = 0;

SqList *p = NULL; /*b*/

result = InitList_Sq(p);

printf(“The result is %d.\n”, result);

free(p);

exit(0);

}

编译后执行程序时出现错误,错误代码:

Segmentation fault

用gdb调试run指令提示如下:

Program received signal SIGSEGV, Segmentation fault.

0x00000000004005b5 in InitList_Sq (L=0×0) at SqList.c:21

21        (*L).elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));

查阅相关资料都说和指针未初始化,在我程序b处已经初始化p为NULL。请问这个问题该如何解决?

好长时间不用C了,都忘光啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值