NULL通常在指针的上下文中使用,并且通过多个标准库(例如<iostream>)中的宏来定义为整数0.'\0'是空字符,是8位零.顺便提一下,8位零等于整数0.
在某些情况下,虽然它被认为是可怕的风格,但这两者可以互换:
int *p='\0';
if (p==NULL) //evaluates to true
cout << "equal\n";
Run Code Online (Sandbox Code Playgroud)
要么
char a=NULL;
char b='\0';
if (a==b) //evaluates to true
cout << "equal again\n";
Run Code Online (Sandbox Code Playgroud)
关于SO已经有很多类似的问题; 例如,这个问题的最佳答案(NULL,'\ 0'和0之间的区别是什么)说"它们实际上不是一回事".
任何人都可以提供一个例子NULL和\0不能互换(优选实际应用,而不是一个病理情况)?