如何访问Fortran中数组中的最后一项?

时间:2014-01-08 03:06:48

标签: arrays indexing fortran

在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

2 个答案:

答案 0 :(得分:18)

array ( ubound (array) )

size仅在数组为1索引时才有效。

答案 1 :(得分:7)

没有这样的便利表示法,你需要这样做

 array(size(array))

在较旧的fortran版本中,您甚至没有 size()并且需要自己跟踪维度

值得注意的是fortran数组可以被定义为具有负索引,因此在其他一些语言中使用的结束符号将是不明确的