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.
");
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.
");
return 1;
}
printf("Memory allocation successful!
");
free(numbers);
numbers = NULL;
return 0;
}
总结
NULL表示空指针- 它表示指针没有指向任何地方
- 您可以将指针与
NULL进行比较,以检查它是否安全 - 如果执行失败,像
malloc()和fopen()这样的函数会返回NULL
提示:在使用指针之前,务必检查它是否为NULL。这有助于避免因访问无效内存而导致的崩溃。

