Как строки и символьные массивы работают в C?

Нет руководств, которые я видел, кажется, объясняет это очень хорошо.

Я имею в виду, вы можете выделить память дляchar*или напишитеchar[25] вместо? В чем разница? Кроме того, существуют литералы, которыми нельзя манипулировать? Что если вы хотите назначить фиксированную строку переменной? Подобно,stringVariable = "thisIsALiteral"тогда как вы потом манипулируете этим?

Может кто-то установить рекорд прямо здесь? И в последнем случае, с литералом, как вы заботитесь о нулевом завершении? Я нахожу это очень запутанным.

РЕДАКТИРОВАТЬ: реальная проблема, кажется, в том, что, как я понимаю, вы должны манипулировать этими различными конструкциями, чтобы выполнить даже простые вещи. Например, толькоchar * может быть передан в качестве аргумента или возвращаемого значения, но толькоchar[] можно присвоить буквальное и модифицированное. Мне кажется очевидным, что нам часто / всегда нужно уметь делать то и другое, и именно в этом моя ловушка.

Ответы на вопрос(3)

Ваш ответ на вопрос