c语言这个程序的if(!L->elem) exit(0);这句话是什么意思啊?

void initSqlist(Sqlist *L){
L->elem=(int *)malloc(MaxSize*sizeof(ElemType));
if(!L->elem) exit(0);
L->length=0;
L->listsize= MaxSize;
}

exit(0)这个函数是结束程序的意思。

一般函数用return返回上一级函数,主函数用return则返回操作系统,也就是程序终止运行。但这个函数可以直接跃过很多层直接回到操作系统。不建议用这个东西追问

我主要是不知道!L->elem是什么意思

追答

L->elem=(int *)malloc(MaxSize*sizeof(ElemType));申请向空间,但是这个操作不一定能成,如果没有成功就返回NULL,如果是这个样子,那么终止程序

追问

那一般感叹号写在变量的前面是什么意思呢

追答

NULL一般是0,这个数也表示假,任何不为零的数表示真,感叹号表示取反。也就是

if(!L->elem) exit(0); 如果“不是NULL”是假的(也就是是NULL),退出
L->length=0; 处理数据
L->listsize= MaxSize;处理数据

if(L->elem) 如果不是NULL,处理数据
{ L->length=0;
L->listsize= MaxSize;
}
else exit(0);否则退出
等效

if(a)和if(a!=0)是一样的,和if(!a)以及if(a==0)等效

最要别写这样的代码,因为不同的编译系统对NULL的解释不同,NULL未必就是0

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-01
就是“申请空间失败,结束运行”
第2个回答  2011-12-01
exit(0):直接退出程序。
第3个回答  2011-12-01
L->elem=(int *)malloc(MaxSize*sizeof(ElemType));
if(!L->elem) exit(0);
L->length=0;
L->listsize= MaxSize;
}
相似回答