- C 标准库
- C 库 - 首页
- C 库 - <assert.h>
- C 库 - <complex.h>
- C 库 - <ctype.h>
- C 库 - <errno.h>
- C 库 - <fenv.h>
- C 库 - <float.h>
- C 库 - <inttypes.h>
- C 库 - <iso646.h>
- C 库 - <limits.h>
- C 库 - <locale.h>
- C 库 - <math.h>
- C 库 - <setjmp.h>
- C 库 - <signal.h>
- C 库 - <stdalign.h>
- C 库 - <stdarg.h>
- C 库 - <stdbool.h>
- C 库 - <stddef.h>
- C 库 - <stdio.h>
- C 库 - <stdlib.h>
- C 库 - <string.h>
- C 库 - <tgmath.h>
- C 库 - <time.h>
- C 库 - <wctype.h>
- C 标准库资源
- C 库 - 快速指南
- C 库 - 有用资源
- C 库 - 讨论
C 库 - NULL 宏
C 库中的 NULL 宏表示空指针常量的值,它可以定义为((void*)0), 0 或 0L,具体取决于编译器厂商。
以下是 NULL 宏结构的列表:
- NULL (void*)0:一个空指针强制转换为 void* 类型。
- NULL 0:一个表示空指针的整型字面量。
- NULL 0L:一个表示空指针的长整型字面量。
语法
以下是 C 库中 NULL 宏的语法。
#define NULL ((char *)0) or, #define NULL 0L or #define NULL 0
参数
- 这不是一个函数。因此,它不接受任何参数。
返回值
此宏不返回任何值。
示例 1
以下是用 C 库宏 NULL 宏演示文件处理的基本示例。
#include <stddef.h>
#include <stdio.h>
int main () {
FILE *fp;
fp = fopen("file.txt", "r");
if( fp != NULL ) {
printf("Opend file file.txt successfully\n");
fclose(fp);
}
fp = fopen("nofile.txt", "r");
if( fp == NULL ) {
printf("Could not open file nofile.txt\n");
}
return(0);
}
输出
假设我们有一个已存在的file.txt文件,但nofile.txt文件不存在。编译上述程序后,我们将得到以下结果:
Opend file file.txt successfully Could not open file nofile.txt
示例 2
下面的程序演示了使用 errno(宏)处理内存分配错误。
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
int main() {
size_t size = 100000000000;
int *arr = malloc(size * sizeof(int));
if (arr == NULL) {
fprintf(stderr, "Memory allocation failed: %s\n", strerror(errno));
} else {
printf("Memory allocated successfully!\n");
free(arr);
}
return 0;
}
输出
执行上述代码后,我们将得到以下结果:
Memory allocation failed: Cannot allocate memory
广告