Лекция: Обычно представляются массивами.
LASCII
· встроенные в Turbo Pascal (макс. размен 255 фиксирован)
· короткие в Delphi
· C++
· иногда короткие локально, а длинные в куче
ASCIIZ
· C
Как хранилась в турбо паскале. По умолчанию там все с 1 начинается. Но строки были с нулевого битика.
Где и как?
Используются многими современными объектно — ориентированными системами, такими как .NET, Java, Python и т.д.
Представляют собой объекты, инкапсулирующие массив символов, но не дающие его изменять.
Преимущества и недостатки.
Очень быстро копируются, т.к. копируются только ссылки, одинаковые строки могут храниться в одной и той же памяти.
При любом изменении строки приходится создавать новый объект с новой строкой.
Для конкатенации длинных строк принято использовать специальные объекты класса StringBuffer (Java) или StringBuilder (.NET), реализующие изменяемые строки.
Экономия.
Разные объекты строкового тип могут ссылаться на фрагменты массивов (указывать в середину и хранить небольшое значение длины). Это требует аккуратного управления выделением памяти и возможности программирования на уровне C.
.NET иногда делает подобные оптимизации.
Строки также можно представлять в виде списков. Это можно рассмотреть на пример Haskell.
· Ленивость потенциально позволяет работать с бесконечными строками, например, с потоками текста.
· Преимущества неизменяемых строк, в т.ч. хвост строки без копирования.( не копируем, а берем сразу)
· Скорость доступа к отдельным символам сильно зависит от того, как система оптимизирует работу со списками.
· Конкатенация совсем не быстрая.