Когда использовать NULL и когда использовать '\ 0' в связанном списке в C?
Я узнал, что в C:null char == '\0' == NULL
и я написал цикл ниже для чтения от начала до конца символа [] в C.
// case #1
char buf[32];
while (buf[i] != NULL){
//do something...
}
Однако мой компилятор gcc дал мне предупреждение: сравнение между указателем и целым числом. Кто-то упомянул, что я путал два отдельных понятия: NULL для указателей, тогда как '\ 0' для символов. Поэтому, чтобы избавиться от предупреждения, я должен использовать '\ 0', так как мой цикл проверяет символ.
Сейчас я пишу связанный список и проверяю, указывает ли указатель головы на узел или нет. Так как это структура, разумно использоватьif (h1 == NULL)
но, видимо, компилятор также компилируется, когда я используюif (h1 == '\0')
хотя узел является структурой, но не символом. Может ли кто-то помочь, почему в этом случае можно использовать как '\ 0', так и NULL, в то время как их нельзя использовать в первом случае?
// case #2
struct ListNode {
int val;
struct ListNode *next;
};