0
点赞
收藏
分享

微信扫一扫

Fortran 数组

DYBOY 2022-10-09 阅读 196


声明时, 只能使用 常数来赋值数组的大小。
但数组的索引值就可以使用常量或者变量。

声明数组的方法

integer  a(10)

integer , dimension(10) :: a

integer a
dimension a(10)

上面是三种声明数组的方法。都一样。

二维数组的声明

integer a(3,4)

声明二维数组也有很多种方法,如上面的方法一样,只是把括号里,用逗号分开,写几个数就可以。

Fortran最高可声明高达7维的数组。

数组的索引值都是从1开始的。 这可许多语言不太一样。 像C,Java等许多语言都是从0开始的。
但这是默认情况。 Fortran中可以声明 索引值的规则。 如果想从0开始,要这样声明

integer a(0:5)

或者,改成多少都行

integer a(-5:0)

多维数组也可以这样声明

integer a(-3:3, -5,5)

数组赋值
赋初值:data 命令

integer a(5)
data a /1,2,3,4,5/

还可以使用星号 * 来表示重复,如

integer a(5)
data a /5 * 3/

还有一种隐含式的循环

integer a(5)
integer i

data(a(i), i=2,4) /3,4,5/
结果是 a(2)=3, a(3)=4, a(4)=5, a(1),a(5)没有赋值

这种隐式循环在write时候也可以使用。

隐式循环还可以嵌套,来给多维数组赋值。 不容易理解。

Fortran 90中可以省略 data

integer :: a(5) = (/1,2,3,4,5/)

括号跟除号之间不能有空格。

对于部分数组的操作
有点类似于 Python的 用法。

a(3:5)=5
a(3:) = 4 把3之后的都设置成5

Fortran 的 数组保存规则 和 C语言正好相反。
是Column Major的。

CUP的高速缓存。CUP向主存储器拿数据时,会把邻近的几笔数据也拿回来,放在cache中

动态申请内存, 可变大小的数组。

program main
integer , allocatable :: a(:)
integer i

allocate(a(9))

do i=1,9
a(i) = i*i

end do


write(*,*) a


deallocate(a)

end


举报

相关推荐

0 条评论