Fortran多维数组语法

Ale*_*lex 0 fortran

两个快速语法问题

real(4), ALLOCATABLE:: thing1(:,:)
Run Code Online (Sandbox Code Playgroud)

创建一个包含2列的2D数组,这是一个尚未定义的行数,其中每个元素是4个实数的数组?

其次,愿意

real(4) box(3,3),versions,revert
Run Code Online (Sandbox Code Playgroud)

创建两个长度为4的数组,以及大小为3x3的2D数组,其中每个元素都是长度为4的数组.

dww*_*ork 5

简短的回答对两者都不是.

REAL(4)不会创建一个实数数组,它决定了真实的KIND.我推荐你这个问题:Fortran 90种参数来解释这一点.

其次,thing1(:,:)不声明两,它声明了两个维度.第一个是行,第二个是列.

你的第二个将创建一个3x3阵列"盒子"的实物== 4的实数,这通常是C语言中的精确"浮动".

我不确定versions,revert应该是什么.

此外,在创建数组时,使用DIMENSION参数是典型的,更明确一点:

REAL(4),ALLOCATABLE,DIMENSION(:,:,:) :: thing1

然后可以将其分配为:

ALLOCATE(thing1(x,2,4)) 假设您仍然希望每个位置有2列,x行和4个数组.