顺序表的一个小问题

Sqlist InitList(Sqlist L)
{
L.elem=(int *)malloc(LIST_INIT_SIZE *sizeof(int));
if(!L.elem) exit(0);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return L;
}
请问L.elem=(int *)malloc(LIST_INIT_SIZE *sizeof(int));
if(!L.elem) exit(0); 这2行中的L.elem 是代表什么啊?(!L.elem)是什么意思呀?
麻烦解释的详细点,最好用通俗点的说法,我是新手^_^多谢o(∩_∩)o..

L.elem 是代表是数组的长度
L.elem=(int *)malloc(LIST_INIT_SIZE *sizeof(int));为数组开辟 (扩充)内存空间.如果系统给它, exit(0);它所需要的内存空间的话这一句就不执行就可以做下面的事,系统内存或其他原因不能给它它要的空间那就执行exit(0);推出就不能继续做下面的事了.if(!L.elem)是用来判断它是否分到了想要的内存(一般是扩充),
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-11-14
如果这句L.elem=(int *)malloc(LIST_INIT_SIZE *sizeof(int));
开辟一个空间成功了,返回L.elem为真 否则L.elem =NULL 空
也就是说如果失败了L.elem =NULL 那么 !L.elem 就是真的就相当于1 的作用
那样才会做exit(0); 总之就是开辟空间失败就退出

(!L.elem)其实没什么意思,不过就象0和1一样,用来判断要不要做下面的语句
相似回答