Fortran 数组元素的选取
既然定义了数组,那么我们就需要有对于数组的增加、选择这样的基本操作。Fortran 数组中的序号是从 1 开始的,即写作 n(1),这点与其他高级编程语言略有不同,不过符合人类的数学认识。因此如下所示,当定义一个长度为 10 的数组 n 时,数组 n 的最后一个元素就是 n(10)。在实际的存储中,我们能够很容易理解一维数组是按照 1 到 10 的顺序从左往右排列的,但是在二维数组中又会是怎么样呢?是行优先还是列优先呢?一般来说,在我们接触过的高级编程语言中几乎都是行优先的,即先存储第一行再存储第二行,以此类推。但是,在 Fortran 中则是列优先的,也就是说 Fortran 的二维数组存储时会先存储第一列再存储第二列,再以此类推。
real n(10) ! n(1) ~ n(10)
real m(4, 4) ! m(1, 1) m(2, 1) m(3, 1) ... m(4, 4)
如果我们在使用数组 n 的过程中忘记了加上序号,那么程序默认就会对整个数组的全部元素进行操作,而非像其他高级编程语言可能会指向数组的第一个元素。
当我们想要去选取数组中的某一个元素时,可以直接通过对应的序号进行选取。但是如果想要选多个元素或者某一行、某一列时,这就有点不同了。比如说,现在有一个长度为 10 的一维数组 n,我们想要获取到从第 3 个元素到第 5 个元素的 3 个元素,应该使用 :
来将序号的上下限分隔开同时选中,即 n(3:5)。如果有一个 3 行 x 4 列 的二维数组 m,我们想要获取到第 2 行到第 3 行的所有元素,则应该使用 m(2:3, 1:4) 来选取。