有没有一种方法可以将数组用作Fortran中另一个数组的地址

时间:2020-08-27 13:46:38

标签: arrays fortran memory-address

我想知道是否可以使用大小与原始数组相同的数组。我知道这很令人困惑,因此我将在下面说明:

program test_pos
implicit none

integer,dimension(4,4) :: holder
integer,dimension(2) :: finder
integer :: row,column

do row=1,size(holder(1,:))
    do column=1,size(holder(:,1))
        holder(column,row)=(row-1)*4+column
    end do
end do

finder=[3,2]

print*,holder
print*,holder(finder)

end program

没有print*,holder(finder)的持有人的打印输出是:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

finder数组的目的是指向holder数组中的地址(在这种情况下,print命令应打印7)。最终,finder将成为函数的输出,我不想为Holder中的每个地址调用(即holder(finder(1),finder(2)))都运行两次该函数。编译代码会产生等级不匹配错误(完全删除)。有什么办法可以解决这个错误/限制?

0 个答案:

没有答案