Допустим, у нас есть массив символьных указателейМассив char * должен заканчиваться на ' 0' или " 0"?
char* array[] = { "abc", "def" };
Теперь то, что должно быть помещены в конце концов?
char* array[] = { "abc", "def", '\0' };
или
char* array[] = { "abc", "def", "\0" };
Хотя обе работы. У нас есть только поставить условие, чтобы проверить конец соответственно
как
array[ index ] != '\0';
или
array[ index ] != "\0";
Мой вопрос в том, какой из них является лучшим способом? Что используется большинством программистов?
Редактировать
Большинство ответов говорят, что NULL лучше, чем '\ 0' и "\ 0". Но я всегда думал, что
NULL является такой же, как «\ 0», который является такой же, как 0х0 или 0
это неправильно?
Что касается редактирования, In C NULL является указателем (обычно определяется (void *) 0. '\ 0' является символьной константой, поэтому при использовании символьной константы, где ожидается указатель, и происходит неявное преобразование. происходит преобразование любого целочисленного нулевого результата в указатель NULL, но он не дает понять, что вы указали указатель. Лучше просто использовать литеральную константу integer zero IMO. Как это происходит на C++, это предпочтительный подход в любом case, но в C++ макрос NULL определяется так же (см. стандартные файлы заголовков вашего компилятора). – Clifford