Как строки и символьные массивы работают в C?
Нет руководств, которые я видел, кажется, объясняет это очень хорошо.
Я имею в виду, вы можете выделить память дляchar*
или напишитеchar[25]
вместо? В чем разница? Кроме того, существуют литералы, которыми нельзя манипулировать? Что если вы хотите назначить фиксированную строку переменной? Подобно,stringVariable = "thisIsALiteral"
тогда как вы потом манипулируете этим?
Может кто-то установить рекорд прямо здесь? И в последнем случае, с литералом, как вы заботитесь о нулевом завершении? Я нахожу это очень запутанным.
РЕДАКТИРОВАТЬ: реальная проблема, кажется, в том, что, как я понимаю, вы должны манипулировать этими различными конструкциями, чтобы выполнить даже простые вещи. Например, толькоchar *
может быть передан в качестве аргумента или возвращаемого значения, но толькоchar[]
можно присвоить буквальное и модифицированное. Мне кажется очевидным, что нам часто / всегда нужно уметь делать то и другое, и именно в этом моя ловушка.