C 语言 - NULL

C 语言 NULL

NULL 是一个特殊值,代表"空指针"——一个不指向任何东西的指针。

它帮助您避免使用空指针或无效指针。您可以将指针与 NULL 进行比较,以检查使用它是否安全。

许多 C 语言函数在出现问题时返回 NULL。例如,如果文件无法打开,fopen() 返回 NULL;如果内存分配失败,malloc() 返回 NULL。我们可以使用 if 语句进行检查,并在出现问题时打印错误信息。

在此例中,我们尝试打开一个不存在的文件。由于 fopen() 失败,它返回 NULL,我们打印一条错误信息:

实例

#include <stdio.h>

int main() {
  FILE *fptr = fopen("nothing.txt", "r");

  if (fptr == NULL) {
    printf("Could not open file.\n");
    return 1;
  }

  fclose(fptr);
  return 0;
}

亲自试一试

如果您尝试分配过多内存,malloc() 可能会失败并返回 NULL

实例

#include <stdio.h>
#include <stdlib.h>

int main() {
  int *numbers = (int*) malloc(100000000000000 * sizeof(int));

  if (numbers == NULL) {
    printf("Memory allocation failed.\n");
    return 1;
  }

  printf("Memory allocation successful!\n");

  free(numbers);
  numbers = NULL;

  return 0;
}

亲自试一试

总结

  • NULL 代表一个空(null)指针
  • 它表示一个指针不指向任何地方
  • 您可以将指针与 NULL 进行比较,以检查使用它是否安全
  • malloc()fopen() 这样的函数在失败时返回 NULL

提示:在使用指针之前,始终检查它是否为 NULL。这有助于避免因访问无效内存而导致的崩溃。