两个快速语法问题
将
real(4), ALLOCATABLE:: thing1(:,:)
创建一个包含 2 列、尚未定义的行数的二维数组,其中每个元素都是 4 个实数的数组?
其次,会
real(4) box(3,3),versions,revert
创建两个长度为 4 的数组和大小为 3x3 的二维数组,其中每个元素都是一个长度为 4 的数组。
两个快速语法问题
将
real(4), ALLOCATABLE:: thing1(:,:)
创建一个包含 2 列、尚未定义的行数的二维数组,其中每个元素都是 4 个实数的数组?
其次,会
real(4) box(3,3),versions,revert
创建两个长度为 4 的数组和大小为 3x3 的二维数组,其中每个元素都是一个长度为 4 的数组。
简短的回答是否定的。
REAL(4) 不创建实数数组,它确定 REAL 的种类。我请您参考这个问题:Fortran 90 kind parameter来解释这一点。
其次,thing1(:,:)
不声明两列,它声明了两个维度。第一个是行,第二个是列。
您的第二个将创建一个 3x3 数组“盒子”,其中实数 == 4,这通常是 C 语言中的精确“浮点数”。
我不确定versions,revert
应该是什么。
此外,在创建数组时,通常会更明确地使用以下DIMENSION
参数:
REAL(4),ALLOCATABLE,DIMENSION(:,:,:) :: thing1
然后可以稍后分配为:
ALLOCATE(thing1(x,2,4))
假设您仍然需要 2 列、x 行和每个位置的 4 个数组。