Вам нужно преобразовать адреса из пространства памяти в исходное пространство массива, чтобы выполнить это.Кроме того, вы указали только расстояние, которое может вызвать некоторые проблемы (без направления)
Если у меня есть массив R x C и две ячейки в местоположениях [r, c] и [c,r], расстояние от некоторой произвольной точки, скажем, [0,0], идентично.И вы никак не сможете заставить один адрес памяти содержать две вещи, если только у вас нет одной из этих модных новых машин с кубитами.
Однако вы можете принять во внимание, что в главном массиве подрядR x C, что каждая строка имеет размер C * sizeof (yourdata) в байтах.И наоборот, вы можете сказать, что исходные координаты любого адреса памяти в пределах массива:
r = (адрес / C) c = (адрес% C)
, поэтому
r1 = (адрес1 / C)
r2 = (адрес2 / C)
c1 = (адрес1% C)
c2 = (адрес2% C)
dx = r1 - r2
dy = c1 - c2
dist = sqrt (dx ^ 2 + dy ^ 2)
(предполагается, что вывы используете массивы, основанные на нуле) (сократите все это вместе, чтобы сделать его более оптимальным)
Для гораздо большего количества идей здесь, посмотрите на любой код манипуляции 2D-изображения, который использует вычисленное значение, называемое "шаг",что в основном указывает на то, что они перемещаются назад и вперед между адресами памяти и адресами массивов