Что такое "C-строка", это массив символов с нулевым элементом;который распадается на указатель на свой первый элемент в большинстве контекстов.Также обычно принимается обратное: указатель на символ (часто) считается указателем на (часть) массива символов, который имеет (последующий) нулевой элемент.
Если вы интерпретируете«пустая строка» как массив из 0 элементов, на самом деле понятия этого нет в языке C.
Если вы интерпретируете «пустую строку» как массив из N элементов, первый элемент которых равен 0, битовое представлениеэтот 1-й элемент является CHAR_BIT
двоичными 0 (обычно 8).
Если вы интерпретируете «пустую строку» как указатель на NULL, битовое представление этого указателя определяется реализацией, но сравнение его с 0
должно дать «true".
/* ERRATA: where it says "is a string" please read "can be interpreted as a string" */
char arr_string[10]; /* if any element is 0, this is a string */
char *ptr_string; /* if it points to a valid object accessible as `char`
** and a subsequent valid char is 0, this is a string */
strcpy(arr_string, "foobar"); /* arr_string[6] == 0 */
ptr_string = arr_string;
test_string_empty(arr_string); /* not empty */
test_string_empty(ptr_string + 6); /* empty */
test_string_empty(NULL); /* unknown */