потому что там нет абстрактных типов. строки - это массив, с которым можно работать только функцией. Тем Си и хорош, что в нем ты работаешь с памятью, которую интерпретируешь как душе будет угодно.
Есть ли такая уверенность, что из множества решений работы с памятью, которые «как душе будет угодно», и которые не могут предоставить стандартные средства cl не окажутся неэффективными?
Главное, что одинаковые символы всегда равны, а разные - нет, и наоборот, и что сравнение происходит не по текстовому представлению символа (а там может быть любой unicode текст), а по указателю на это представление. Сам адрес портабельно использовать всё равно не получится (он, конечно, может и меняться в процессе эволюции, так как символы можно удалять и вводить снова).