Расходуя свое время на языках высокого уровня, мне вдруг пришло в голову, что я не знаю разницы между массивом Char и строкой. Я думаю, что они одно и то же, но не уверены. Есть ли разница? Это просто массив Char с некоторой абстракцией?
В чем разница между массивом Char и строкой?
Ответ 1
массив символов - это просто массив символов
строка - это структура данных, которая использует массив символов
некоторые представления строк используют нуль-терминатор (например, C), другие используют префикс длины
Ответ 2
Строка - это абстракция, но последовательность символов. В нем ничего не говорится об осуществлении. Если вы хотите создать реализацию String на основе связанного списка символов, вас не останавливает.
В языке, таком как C, очень мало различий - просто строка c является указателем на последовательность символов с нулевым символом на последовательных адресах.
В языке OOP, String будет объектом некоторого класса String. Это, вероятно, будет содержать данные в массиве символов внутри, но вам не нужно это знать. Массив символов может быть только простым массивом, но класс String может предоставлять множество операций (подстроки, регулярные выражения и т.д.) Для строк, если разработчик решает.
Ответ 3
Я использовал для обучения программированию, и именно так я объяснял эту конкретную проблему.
Во-первых, сосредоточьтесь на том, что обе вещи имеют в общем: как массив char, так и строка состоят из последовательности символов. Последовательность означает, что символы упорядочены и что они могут быть перечислены, например.
Теперь сосредоточьтесь на том, что каждая из двух вещей добавляет, по-разному, к этой общей точке.
A char массив добавляет то, что, как известно, добавляется любым массивом: индексирование и произвольный доступ к отдельным элементам.
A string, с другой стороны, добавляет тот факт, что последовательность символов рассматривается как целая вещь со своими собственными свойствами. В некоторых реализациях достижение этого означает изменение способа хранения символов (например, добавление завершающего нуля в строки C).
Этот подход (посмотрите на общие черты, а затем на то, как вещи расходятся от них) оказался полезным в самых разных ситуациях.
Надеюсь, что это поможет.
Ответ 4
В C они почти одинаковы, хотя строка будет иметь дополнительный нулевой символ в конце.
В других языках (Java, С# и т.д.) строка является объектом, тогда как массив символов представляет собой массив из... chars (которые являются примитивными типами данных).
Обычно строки реализуются с массивами символов.
Ответ 5
Ответ в некоторой степени зависит от того, на каком языке вы говорите. В мирах .Net/С# - неизменяемые объекты, тогда как массив char вы можете легко добавлять/изменять значения в массиве. Строки можно рассматривать как массивы char в режиме только для чтения, так как вы можете перебирать символы в строке.
В реферате я думаю, что самая большая разница в том, как вы хотите работать с ними. Хотите ли вы работать с куском текста, скажем, чтобы показать сообщение конечному пользователю, или вы смотрите на последовательность символов, делая некоторую обработку в списке? Все это довольно субъективно на определенном уровне.
Ответ 6
String
является class
в java. Таким образом, он имеет атрибуты, например. length
. Поэтому, когда вы запрашиваете размер строки, он просто возвращает это, а не вычисляет значение каждый раз. Это также другие способы, например. indexOf
, substring
и т.д., чтобы сделать жизнь легкой, поэтому вам не нужно это делать самостоятельно.
Ответ 7
Строка в стиле C внутренне представляется массивом символа с концевым "\ 0", что указывает на конец строки.
В С++ существует класс контейнера строк, определенный в string.h, который предоставляет некоторые типичные операции с строками для управления строкой.
Ответ 8
Это зависит от языка. В языках C-ish они довольно синонимы. Вы можете утверждать, что разница в том, что "строки" имеют неявный завершающий нуль, но это будет расщепление волос.
Фортран - другая крайность. Там массивы символов и символьные строки являются совершенно разными типами, для них доступны различные операции.
Ответ 9
Строка - это символьный массив, завершенный нулевым символом '\ 0