-
'\0'
是 NUL 字符,它是一个字符常量,其 ASCII 值为 0。这个字符用于标记 C 风格字符串的结尾。 -
NULL
是一个宏定义,通常被定义为整数常量 0 或(void *)0
,用来表示空指针。它用于指针操作,表示该指针不指向任何有效的内存地址。
虽然 '\0'
和 NULL
在内部都可能表现为数值 0,但它们的应用场景和意义是不同的:
'\0'
(NUL 字符):用于字符串处理,作为字符串的终止符。NULL
:用于指针操作,表示空指针。
示例
#include <stdio.h>int main() {// NUL 字符 '\0' 用于字符串结束char str[] = "hello";str[5] = '\0'; // 实际上这是多余的,因为 "hello" 已经包含 '\0'printf("String: %s\n", str); // 输出字符串直到遇到 '\0'// NULL 用于指针初始化或比较int *ptr = NULL;if (ptr == NULL) {printf("Pointer is null.\n");}return 0;
}
在这个例子中:
str
是一个以\0
结尾的字符串。ptr
是一个被初始化为NULL
的指针,表示它当前不指向任何有效内存地址。