C语言初始化错误怎么办,结构体变量的初始化错误
在Linux下編寫(xiě)程序SqList.c如下
/**
*程序功能說(shuō)明:順序表初始化
*/
#include
#include
/* In common use */
#define OVERFLOW -1
#define OK 1
#define LIST_INIT_SIZE 100 /* 線性表存儲(chǔ)空間的初始分配量 */
#define LISTINCREMENT 10 /* 線性表存儲(chǔ)空間的分配增量 */
typedef int ElemType;
typedef int Status;
typedef struct{
ElemType *elem; /* 存儲(chǔ)空間基址 */?/*a、問(wèn)題在這里*/
int length; /* 當(dāng)前長(zhǎng)度 */
int listsize; /* 當(dāng)前分配的存儲(chǔ)容量(以sizeof(ElemType)為單位) */
}SqList;
Status InitList_Sq (SqList *L)
{
/* 構(gòu)造一個(gè)空的線性表L。*/
(*L).elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
if (! (*L).elem) exit(OVERFLOW); /* 存儲(chǔ)分配失敗 */
(*L).length = 0; /* 空表長(zhǎng)度為0 */
(*L).listsize = LIST_INIT_SIZE; /* 初始存儲(chǔ)容量 */
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);
}
編譯后執(zhí)行程序時(shí)出現(xiàn)錯(cuò)誤,錯(cuò)誤代碼:
Segmentation fault
用gdb調(diào)試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));
查閱相關(guān)資料都說(shuō)和指針未初始化,在我程序b處已經(jīng)初始化p為NULL。請(qǐng)問(wèn)這個(gè)問(wèn)題該如何解決?
好長(zhǎng)時(shí)間不用C了,都忘光啦!
總結(jié)
以上是生活随笔為你收集整理的C语言初始化错误怎么办,结构体变量的初始化错误的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: hudson linux节点,Linux
- 下一篇: c语言编程平均分,用C语言编程平均分数