开发者社区> 问答> 正文

用 NULL 或者符号 ! 判断 C 语言字符指针有什么区别?

#include <stdio.h>

int main(int argc, char const *argv[]) {

  char *s = "hello";

  if (!s) {
    fprintf(stderr, "s is null\n");
  } else {
    fprintf(stderr, "%s\n", s);
  }

  if (s == NULL) {
    fprintf(stderr, "s is null\n");
  } else {
    fprintf(stderr, "%s\n", s);
  }


  return 0;
}

这两种方法貌似都能判断字符指针是否为空,有什么不一样的吗?用哪种比较好?

展开
收起
a123456678 2016-06-07 20:28:23 2269 0
1 条回答
写回答
取消 提交回答
  • 在 C 语言里并无不同,但推荐使用前者。

    "NULL" 的本质是个宏,并非是 build-in 常量,C99 中甚至可以自行定义,故尽量避免使用它去判断。[1]
    当 !s 与 s == NULL 表示同一含义的时候,使用前者。(程序员的原则:Brevity Can Be a Virtue)
    前者更为业界所认可,用来判断有保障。[2]

    2019-07-17 19:31:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载