Наткнулся на такую проблему. Вот пример для её демонстрации:
program test4;
//объявляю тип
type
xz=array [1..2] of integer;
var
//указываю переменную этого типа
a:xz;
procedure mega(b:xz);
begin
b[2]:=1;
end;
//казалось бы, изменяя b[2], мы меняем только локальную переменную
begin
a[1]:=3;
a[2]:=4;
//присваиваю
mega(a);
//теоретически, "a" не должно измениться
drawText(integertostring(a[2]), 0, 0);
//выводит ответ 1 вместо 4
repaint;
delay(5000);
end.
|
Пытался изменить на
procedure mega(b:xz);
var c:xz;
begin
c:=b;
c[2]:=1;
end;
|
В таком случае выдает ошибку
Как сделать, чтобы передаваемая в функцию глобальная переменная своего типа данных не изменялась?
А то рекурсивный алгоритм не получается...