您的位置:首页 > 其它

Fortran 数组

2016-04-05 19:09 302 查看
声明时, 只能使用 常数来赋值数组的大小。

但数组的索引值就可以使用常量或者变量。

声明数组的方法

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: