Есть стек чисел (условно) бесконечной глубины.
Операция (сложение, вычитание, умножение, деление и т. д.) выполняется над элементом(ами) в самом верху стека. Результат отправляется обратно в стек.
Это дает возможность выполнять сложные вычисления с учетом правил приоритета операторов, т. к. можно хранить результаты предыдущих вычислений в стеке.
Например, (5 + 1) * (6 - 2) запишется так:
5 1 + (сейчас в стеке по адресу 0 лежит 6) 6 2 - (сейчас в стеке по адресу -1 лежит 6, а по адресу 0 лежит 4) * (сейчас в стеке по адресу 0 лежит 24).
Стек:
Адрес Число
0 24
-1 -
-2 -
... -
Var i:integer;
begin
for i:=1000 to 9999 do
if i mod 134 = 11 then writeln(i);
end.
Результат (только начало и конец, т.к. чисел много):
<span>1083
1217
1351
...
</span><span>9659
9793
9927</span>
Функция Foo() принимает указатели на 2 массива (я так понял, что это нужно по заданию), а там уже вызывается функция, которой передаётся указатель только на 1 массив.