如何在Fortran中访问数组中的最后一个元素?

22

在Matlab中,end索引允许我访问最后一项。

> array = [1 2 3 4 5 6 7];
> array(end)
ans =  7

我该如何在Fortran中实现同样的功能?

program hello
   integer array(7)
   array = (/1, 2, 3, 4, 5, 6, 7/)
!print *, array(end)
!               1
!Error: Legacy Extension: REAL array index at (1)

! print *, array(-1)
!                1
!Warning: Array reference at (1) is out of bounds (-1 < 1) in dimension 1

! print *, array(0)
!                1
!Warning: Array reference at (1) is out of bounds (0 < 1) in dimension 1
end program Hello

你为什么标记为Matlab?这似乎是一个Fortran问题。 - Bruce Dean
2
这可能是不可能的,例如,如果数组被假定为大小虚拟参数。 - Vladimir F Героям слава
2个回答

20
array ( ubound (array) )

size 只有在数组是以 1 为起始下标时才有效。


9
注意:如果您有一个多维数组,您需要指定array(ubound(array,dim=n)),其中n是您要查找的维数。 - Kyle Kanos
1
谢谢您的提示。@KyleKanos使用了您的建议后,我发现如果我想要提取特定行的最后一个元素,则需要使用以下代码:array(n,ubound(array,dim=n))。谢谢! - ryanjdillon

7

没有这样的方便表示法,您需要这样做

 array(size(array))

在旧版本的Fortran中,甚至没有size()函数,需要自己跟踪维度。

值得注意的是,Fortran数组可以定义为具有负索引,因此在其他一些语言中使用的结尾符号会产生歧义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接