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

Почему нельзя настраивать массив в процессе работы программы? Pascal ABC ну и если так вообще везде?

массив не музыкальный инструмент... хотя возможно дело в настройщике
Сергей Технолог
Сергей Технолог
22 439
Лучший ответ
А что такое "настройка массива"?
Суръатджон Тухтаев Это назначение массива, от 1..N элементов. Вопрос в другом, в программе PascalABC можно настраивать массив двумя способами, насколько я знаю.
Первый прост, достаточно написать в блоке var переменную: array (массив) и указать кол. во элементов в этом массиве, вроде [1..5] или [1..10] of (указываем тип данных) of integer, of string, of int64 и т. д.

Этот способ простой, но тем не менее следующий так же довольно прост, его удобство заключается в создании константы, константа - это как переменная, но заранее написанное в неё значение до работы программы в коде уже нельзя изменить.

Итак, пишем:

Блок const и к примеру N=10; как то так. Большими, чтобы отличать от простых переменных в коде.

А записываем так-же, но: [1..N].

Я хочу знать, можно ли или почему нельзя изменять кол
Вам нужен динамический массив? Используйте pointer-ы
Нет, так не везде, в PHP и JS массивы растягиваются как угодно. В php просто добавляешь элемент через phparray[] = $a, а в js — jsarray.push(a)
Vлadиslаv .
Vлadиslаv .
78 661
работать со статическими массивами удобнее но компилятор должен знать сколько выделить памяти под массив
динамически не намного сдожнее но надо писать оператор следить чтобы не было порчи указателя в конце освобождать память,,
а если массив "растягивать" то надо еще память под него поискать -- возможно переписать в другое место, а если при этом где то хранится указатель на массив то он становится "плохим" -- и если потом использовать этот указатель то такую ошибку очень трудно найти
Если хотите, чтобы не приходилось вручную задавать длину - юзайте списки (коллекции) вместо массивов. Не знаю, есть ли они в PascalABC.
Еще бывают динамические массивы (пишем просто array of integer, без длины), их нету в PascalABC, но есть в PascalABC.NET.

> ну и если так вообще везде
Не везде.
Скажем, в C# уж точно можно хотя бы заново создать массив с нужной длиной (с удалением всех его элементов).
Если у вас не PascalABC.NET, а просто PascalABC, то это совсем УГ игрушечное, что вы от него хотите? Да и первый-то тоже...
Суръатджон Тухтаев У меня Pascal ABC net