(1) fortran 中的数组

1、数组片段

Fortran中引用数组有三种方法:

数组名         代表数组中的所有元素

数组元素      代表数组中的某个元素

数组片段      代表数组中的若干元素,可以是连续的,也可以是分离的

1.1连续片段方法

数组名(下标偶对),下标偶对表示下标的起始和终止位置。

例如A(3:6)= 0;

print * ,A(3:6)

1.2 下标三元法,可以把不连续的元素组成数组片段。

格式:数组名(e1:e2:e3)  ,其中e1表示起始下标,e2表示终止下标,  e3表示间隔(步长).

e1省略时表示从下界开始,e2省略时表示到上界结束, e3省略时表示间隔为1。

例如: A (10:30:2),A(:20:4),A(8::10)

2、数组构成器及用途
数组构成器是左右两端有 "(/" 和 "/)" 定界的同类型数据的集合。

用途:可以代替DO循环的繁琐形式给数组赋初值,一般性赋值。

例如:有数组A(1:4),A = (/1.1,2.2,3.3,4.4/), 则
A(1)=1.1  ,  A(2)= 2.2  , A(3)=3.3  ,A(4)=4.4

常见形式有
(1)隐含DO法
A = (/ (sqrt(I),I=1,4) /)
(2)数组元素
A = (/ v(3),v(5),v(6)  /)
(3)数组片段
A = (/ V(3:9:3)  /)

3、数组的形式
(1)常数组
普通的数组
(2)可调数组
形式:
可以在维界表达式中出现整型变量
例如real,dimension(N:M)::C ,这里M,N是变量
用处:只可以在子程序中作虚数组用,并且维界变量必须列入程序的虚元中。
例如 subroutine sub(C,M,N)
     real , dimension(N:M)::C
(3)假定形状数组
形式:说明时不出现维界,只有冒号,例如:real, dimension(:)::C,(一维)或者real,dimension(:,:)::D,(二维)
用处:只可以在子程序中作虚数组用,用于和实数组结合,结合后自动具有实数组的结构。

(4)动态数组
维界可以在程序执行过程中改变。
使用步骤:
a、说明:real,dimension(:),allocatable::AL1,AL2
b、分配内存:allocate(AL1(M),AL2(6:N)).则AL1为AL1(1:M),AL2为AL2(6:N)
c、用deallocate语句释放内存:deallocate(AL1,AL2)

原文地址:https://www.cnblogs.com/liyanwei/p/1758290.html