我想知道是否可以使用大小与原始数组相同的数组。我知道这很令人困惑,因此我将在下面说明:
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))
)都运行两次该函数。编译代码会产生等级不匹配错误(完全删除)。有什么办法可以解决这个错误/限制?