Да, вы можете использовать абсолютно указатели, чтобы указывать на субрегионы массива.Это может быть очень удобно во многих ситуациях, например, для расчета трафарета для PDE:
program pointerviews
real, dimension(10), target :: alldata
real, dimension(:), pointer :: left
real, dimension(:), pointer :: centre
real, dimension(:), pointer :: right
alldata = (/ (i, i=1,10) /)
left => alldata(1:8)
right => alldata(3:10)
centre=> alldata(2:9)
print *, alldata
print *, left
print *, centre
print *, right
print *, (left - 2*centre + right)
end program pointerviews
Указатели на массив в FORTRAN - это больше, чем просто адрес, они содержат размер массива, шаг и информацию о типетоже.Таким образом, вы можете делать еще более безумные вещи, как это (если вы привыкли к указателям на C) и включать шаги:
program pointerviews2
real, dimension(10), target :: alldata
real, dimension(:), pointer :: left
real, dimension(:), pointer :: centre
real, dimension(:), pointer :: right
alldata = (/ (i, i=1,10) /)
left => alldata(1:8:2)
right => alldata(3:10:2)
centre=> alldata(2:9:2)
print *, alldata
print *, left
print *, centre
print *, right
print *, 'Changing alldata(4) = 9999'
alldata(4) = 9999.
print *, alldata
print *, left
print *, centre
print *, right
end program pointerviews2
Вы не можете , однако, есть области массива,другого типа, чем остальные данные, по определению.Вам придется использовать производные типы или полиморфизм, если вы хотите переменную, которая содержит данные нескольких типов.