NULL часто используется в контексте указателей и определяется с помощью макросов в нескольких стандартных библиотеках (например, <iostream>
) как целое число 0
. '\0'
является нулевым символом и составляет 8 бит нулей. Кстати, 8 бит нулей эквивалентно целому числу 0
.
В некоторых случаях, хотя считается, что это ужасный стиль, эти два могут быть взаимозаменяемы:
int *p='\0';
if (p==NULL) //evaluates to true
cout << "equal\n";
или
char a=NULL;
char b='\0';
if (a==b) //evaluates to true
cout << "equal again\n";
Уже существует много подобных вопросов по SO только; например, верхний ответ на этот вопрос (В чем разница между NULL, '\ 0' и 0) говорит: "На самом деле это не то же самое".
Может ли кто-нибудь представить пример, что NULL
и \0
не могут быть взаимозаменяемы (предпочтительно фактическое приложение, а не патологический случай)?