Показать сообщение отдельно
Старый 27.05.2010, 21:43   #1
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений
(для 790 пользователей)
Вопрос Проблема передачи параметров в функцию

Наткнулся на такую проблему. Вот пример для её демонстрации:
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;
В таком случае выдает ошибку

Как сделать, чтобы передаваемая в функцию глобальная переменная своего типа данных не изменялась?
А то рекурсивный алгоритм не получается...
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
(Offline)
 
Ответить с цитированием