Fortran 数组

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

声明数组的方法

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 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值