if(!p) if(p!=null) 这两种写法那种比较好?

如题所述

void Delete(LNode* head) //删除学生信息
{
LNode*p=head,*q;
int ID;
display(head);
cout<<"请输入要删除的学生学号:";
cin>>ID;
while(p!=NULL&&p->data.id!=ID)
{
q=p;
p=p->next;
}
//if(p!=NULL) //出错
if(p) //正确
{
q->next=p->next;
delete p;
cout<<"已删除\n";
display(head);
}
else cout<<"没有找到该学生信息\n";
}
没什么区别,防止敲击键盘是出错时,编译器是否能提示报错。
if(NULL != p) 如果写错写成if(NULL = p) 会报错
if( p!=NULL )如果写错写成if(p=NULL) 不会报错
一种编程小技巧,没什么的
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-10-20
差不多 还是前面的好些吧 万一有的编译器没定义null
第2个回答  2020-04-14
void
Delete(LNode*
head)
//删除学生信息
{
LNode*p=head,*q;
int
ID;
display(head);
cout<<"请输入要删除的学生学号:";
cin>>ID;
while(p!=NULL&&p->data.id!=ID)
{
q=p;
p=p->next;
}
//if(p!=NULL)
//出错
if(p)
//正确
{
q->next=p->next;
delete
p;
cout<<"已删除\n";
display(head);
}
else
cout<<"没有找到该学生信息\n";
}
没什么区别,防止敲击键盘是出错时,编译器是否能提示报错。
if(NULL
!=
p)
如果写错写成if(NULL
=
p)
会报错
if(
p!=NULL
)如果写错写成if(p=NULL)
不会报错
一种编程小技巧,没什么的
第3个回答  2014-10-20
使用前面一个,0的时也可以用!
第4个回答  2020-05-16
这两个的含义不一样,不应该是if(!p)和if(p==null)?

if(!p) if(p!=null) 这两种写法那种比较好?
if(p) \/\/正确 { q->next=p->next;delete p;cout<<"已删除\\n";display(head);} else cout<<"没有找到该学生信息\\n";} 没什么区别,防止敲击键盘是出错时,编译器是否能提示报错。if(NULL != p) 如果写错写成if(NULL = p) 会报错 if( p!=NULL )如果写错写成if(p=NULL) 不会报...

if(NULL != p)和if( p!=NULL )在C语言中有什么区别 具体是什么意思!
if(NULL != p)和f(p != NULL)两者并没什么区别,都是判断指针p是否为空。但是当考虑到出错检查时,if(NULL != p)写法更好,因为如果误写为if(NULL = p)的时候,编译器就会提示出错(因为常量不能被赋值);而if(p != NULL)如果误写为if(p = NULL),则编译器不会报错。

请问if(p!=NULL)与if(p)这两个条件语句有什么区别?我在VC中运行时第一...
p 是指针,p 要初始化。if(p) -- p 为 0 等于假。非0 等于真 if(p!=NULL) 条件成立为真,不成立为假 如果 while(p!=NULL 没错,if(p!=NULL) 也应当没错 你的错误信息图形看不清。

if(*p != NULL)与if(p != NULL)
p!=NULL是恒成立的。因为p是一个地址常量。而*p!=NULL,是把p指向的一段内存中的数据当做指针来使用,这段内存由于已经被你初始化为0,所以这项判断也成立。但意思就不同了。

...NULL等不等于0?假设p是一个指针变量,if(p);和if(p!=NULL);这两...
if(\/* ... *\/){ p=NULL;} else { p=\/* something else *\/;} \/* ... *\/ if(p==0)那么NULL确实总是等于0,这也就是空指针定义的本质所在。如果你是指“其存储方式和整型值。相同”,那么答案是“不”。NULL并不必须被存为一个整型值0,尽管这是NULL最常见的存储...

C语言中if(!p)是什么意思?急?
1、!p意思就是非p,如果p的值为0,!p判定为真;如果p的值不是0,!p的判定为假。2、如果指针没有内容,NULL。即p的值为0,!p判定为真。3、如果指针不指向空的话执行if里面的语句。判断指针是否为空,也就是说指针是否指向了具体的结构体。4、C语言中%p用来输出指针类型自身的值。也就是说...

while(p)和if(p)的具体意思是什么?
while(p) 和if(p)在这里的意思差不多。都是当p不为空的是指执行后续语句。等价于 while(p != NULL ) if (p != NULL)。在代码中你还可以看到类似这样的写法。while(!p) if(!p)。这个就是当p为空的时候才执行后续的语句 。等价于while(p == NULL ) if (p == NULL )。

逻辑类型包含那两个值
所以逻辑非后面的数据类型是没有要求的。!(2+3)会首先执行2+3,变成!5,5不是0为真,那么!5自然就是假,类似的还有这种写法int*p=NULL;if(!p)//这个意思是p的值不能是空(指针空就是指针的值为0,0为假,!0为真)才执行代码段a,否则执行代码段b代码段aelse代码段b不知道...

if (*p!=null)
if(*p!=NULL) \/*如果字符串非零(注释:这句话写得很罗嗦,直接写成if(*p)就可以*\/ { f(p+1);} \/*将字符串指针加1,递归调用本函数,也就是先处理下一个字符的意思*\/ printf("%c", *p);\/*递归调用结束后,开始打印字符。由于是递归,其实第一次运行到这个语句的时候,p已经移到最...

int *p1; p1=...; if(!p1) {...}
if(!p1) 是指 p1的值不为空,通常是不为null的时候执行 {...}

相似回答