Может кто-нибудь объяснить мне, почему не работает следующая программа и как заставить ее работать?
В основной программе я размещаю указатель, в подпрограмме sub
я ищу форму массива и получаю неправильные значения.
program test
real, pointer, dimension(:,:,:) :: arr
allocate(arr(3,5,7))
print *, "In test: ",shape(arr)
call sub(arr)
print *, "Back in test: ",shape(arr)
end program test
subroutine sub(arr)
real, pointer, dimension(:,:,:) :: arr
print *, "In sub: ",shape(arr)
end subroutine
Выход:
In test: 3 5 7
In sub: 12694064 1 3
Back in test: 3 5 7
Спасибо
PS: я использую gfortran (gcc 4.4.3)
РЕДАКТИРОВАТЬ: с gfortran 4.6 этот код просто не компилируется. Я получаю ошибку:
Пустой аргумент 'arr' процедуры 'sub' в (1) имеет атрибут, который требует явного интерфейса для этой процедуры