codecamp

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) 来选取。


Fortran 数组的定义
Fortran 跨行与注释
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }