В Фортране вы можете объявить массив с любым подходящим (целочисленным) диапазоном, например:
real* 8 array(-10:10)
Я считаю, что фортран при передаче по ссылке всегда обходит массив (1) какссылка, но я не уверен.
Я использую указатели фортрана, и я считаю, что фортран указывает на «1-й» адрес элемента, т.е. массив (1), а не массив (-10).Однако я не уверен.
Как Фортран справляется с отрицательной индексацией массива в памяти?И определяется ли имплиментация?
Редактировать: Чтобы добавить немного больше деталей, я передаю блок malloc'd из C в Fortran с помощью указателя Fortune, чтобы указать на адрес, который являетсявыполняется вызовом программы Fortran из CIe C:
void * pointer = malloc(blockSize*sizeof(double));
fortranpoint_(pointer);
И процедура точки Fortran выглядит следующим образом:
real*8 :: target block(5, -6:6, 0:0)
real*8 :: pointer array(:,:,:)
entry fortranPoint(block)
array => block
return
Проблема в том, что иногда, когда она позже пытается получить доступ,:
array(1, -6, 0)
Я не уверен, что это доступ к адресу в начале блока или где-то перед ним.Теперь я думаю, что это определяется реализацией, но хотел бы узнать подробности каждой реализации.