问题描述:
数据结构作业中,写了一个初始化表的函数:
#define InitSize 100
#define ElemType int
typedef struct {
ElemType* list;
int len;
int size;
} sql_;
int sql_init(sql_ *head) {
(*head).list = (ElemType*)malloc(InitSize*sizeof(ElemType));
(*head).len = 0;
(*head).size = InitSize;
return 1;
}
int main() {
sql_ L1;
sql_init(&L1);
sql_*L2;
sql_init(L2);
system("pause");
}
但运行时却报错:Segmentation fault
进入调试界面发现L1成功初始化了,但到L2时就出了问题,那么L1和L2初始化的代码有什么不同呢?
分析问题:
sql_ L1;
sql_init(&L1);
sql_*L2;
sql_init(L2);
可见L1被声明为 sql_类型;而L2却被声明成sql*_类型。
vscode中并未给出警