Какие-то чудеса с указателями.
Код тестовой программы следующий:
VAR
i: INT;
j: INT;
str1: STRING[8];
p1: POINTER TO BYTE;
p2: POINTER TO ARRAY [0..1] OF BYTE;
END_VAR
p1 := ADR(str1);
p2 := ADR( i);
i := 124;
p1^ := p2^[0];
p1 := p1 + 1;
p1^ := p2^[1];
p1 := p1 + 1;
p1 := ADR(str1);
p2 := ADR(j);
p2^[0] := p1^;
p1 := p1 + 1;
p2^[1] := p1^;
Запускаю программу на контроллере и вижу:
i = 124
j = 124
Далее изменяю имена переменных в редакторе p1 -> ptr1, p2 -> ptr2
Запускаю программу на контроллере и вижу:
i = -28924
j = -18564
Что за чудеса не понятно. Прошу помощи и разъяснений.




Ответить с цитированием