Другие языки программирования и технологии

Паскаль. Сколько байт занимает переменная типа string[10]? 11? .

Это столь важно? 11 и 12 соответственно.
"в памяти занимает от 1 до 256 байт – по количеству символов в строке, плюс один байт, в котором хранится длина самой строки. "
Дмитрий Глущенко
Дмитрий Глущенко
1 244
Лучший ответ
Вот здесь разобран подробно String в Паскале
http://informatics.mccme. ru/moodle/mod/book/view.php?id=532&chapterid=246
(убрать пробел)
Честно, даже там всё сумбурно написано, так как действительно String не предназначен для того чтобы считать байты!
Могу вам только аналогию на Си описать, где всё просто и понятно
Любая строка должна заканчиваться 0-символом
Если в строке, например 10 символов, то для её хранения очень желательно выделять 11 байт!
Почему очень желательно, а не обязательно, да потому что если Вы понимаете про 0 символ, то Вы можете использовать свою функцию вывода, в которой, например, Вы предполагаете, что знаете размер массива и не тратить память на хранение 0-го символа. Но конечно в большинстве случаев это не удобно и легко приводит к ошибкам!
В Си строка это массив символов char (байтовых переменных) и для хранения строки в 10 байт, я должен создать массив в 11 элементов!
У Вас же string[ 10 ]! Вот так в Паскале: либо просто String либо String[число] . Когда просто string по умолчанию говорят про строку в 255 байт, а то, что памяти при этом выделяется 256 байт об этом, почему-то умалчивают! Кстати именно 256 байт первоначально, как круглое число! А уж 255 - это то что получилось!
Поэтому для Вашего примера string[ 10 ] строка должна содержать не более 9 символов!
Dj Fenix
Dj Fenix
76 473
Это очень просто выяснить:
---
type TS = string[10];
begin
Writeln(SizeOf(TS));
end.
---
Песни о Паскале - программирование для школьников и начинающих
Читайте главу 44
памяти может занимать столько, сколько позволит компилятор
вообще фактически 11 и 12 минимум.
Компилятор может выделить, и наверняка именно так и сделает, больше, например, с выравниванием по 4 байтовой границе будет по 12 байт.
Farhod Mirzaev
Farhod Mirzaev
3 721
походу) конец строки там наверное одиннадцатый)