下面这个程序看不懂呀? "!L"是什么意思呀? L不是指针变量吗?那他怎么可以做 !运算?

int init(LinkList *L)
{
*L=(LNODE *)malloc(sizeof(LNODE));
if(!L)
exit();
memset(&((*L)->data), 0 , sizeof(struct STU));
(*L)->next=NULL;
return 1;
}

指针可以被赋值了NULL,就是空指针,就是0的意思,当然可以做!运算,求反嘛。
*L=(LNODE *)malloc(sizeof(LNODE));这句话分配内存,如果分存内存失败,就返回0
if(!L)如果L为0,就退出程序,为了防止内存分配失败。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-21
if(a) 就是if(a!=0) 或者 if(a!=NULL)
反过来什么意思也就清楚了
L是指向动态申请内存地址的指针,动态申请失败时,L就是NULL了追问

那初始化函数memse执行完后 指针变量L指向哪个地方? 是不是在执行memset时 指针 L会自动加1?

追答

memset函数,没记错的话,是对内存的填充吧,不会改变L的位置的

追问

那这条 (*L)->next=NULL 就无法解释了呀? 如过不改变的话 就更难理解了?

本回答被提问者采纳
第2个回答  2011-10-21
L是指针变量…当这个变量没有指向任何数据的时候,或者分配存储空间没成功的时候,是空的,对它进行操作前,要判断一下它空还是不空
第3个回答  2011-10-21
就是指指针L指向的内容不为空,即NULL
第4个回答  2011-10-21
if(!L)相当于
if(L == NULL)追问

那L 什么时候才能指到NULL 程序里面看不出来呀?

相似回答