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

用 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;
}

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


完全一样,看个人习惯.从可读性来说,推荐后者


在 C 语言里并无不同,但推荐使用前者。

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

【热门文章】
【热门文章】