if(p==NULL)和if(!*p)作用相同还是相反?求解释

dag617712 2015-07-01 08:35:35
char *p;那么if(p==NULL)和if(!*p)作用相同还是相反?我觉得是相反的,但好像是相同的,求解释?
...全文
605 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2015-07-02
  • 打赏
  • 举报
回复
引用 2 楼 king191923157 的回复:
前面写错了 if(p==NULL) 和 if(!p) 效果相反 早期的指针 空指针NULL的值是0 if(p==NULL) 相当于 if(p==0) if(!p) 相当于 if(!(p!=0))
就一个意思,通常我爱写成if(!p) NULL 的宏就是0, 另外新版编译器都支持推荐用nullptr 另外“ if(!p) 相当于 if(!(p!=0)” 这什么意思,不懂,if(!p) 就是p为零(即!p不为零)时候执行
fly_dragon_fly 2015-07-02
  • 打赏
  • 举报
回复
if(p==NULL) ==> if(p==0) if(!*p) ==> if(*p==0)
ForestDB 2015-07-01
  • 打赏
  • 举报
回复
根本就没有可比性: char * p = NULL; if (p == NULL) // true if (!*p) // crash char a = '\0'; char * p = &a; if (p == NULL) // false if (!*p) // true char a = 'A'; char * p = &a; if (p == NULL) // false if (!*p) // false 当然,如果LZ问的是 if (p == NULL) 和 if (!p) 的话,两个条件是等价的,简单的判断方法就是使用真值表。
king191923157 2015-07-01
  • 打赏
  • 举报
回复
前面写错了 if(p==NULL) 和 if(!p) 效果相反 早期的指针 空指针NULL的值是0 if(p==NULL) 相当于 if(p==0) if(!p) 相当于 if(!(p!=0))
king191923157 2015-07-01
  • 打赏
  • 举报
回复
不同的东西 p==NULL 判断指针是不是空指针 !*p 是对p指针指向的char 进行取反操作 if(p==NULL) 和 if(!p) 效果相同,但与指针判空 建议使用前者

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧