Fortran数组形状与大小

时间:2017-05-16 01:53:43

标签: fortran size shape

在矢量(一个简单的数字序列)的情况下,我不明白大小和形状之间的区别。

附带的脚本返回10两次,但是从大小返回的是0(一个数字),而形状的返回是1?

Program main
 implicit none
 integer (kind=4) :: numbers(10)=(/0,1,2,3,4,5,6,7,8,9/)
 integer (kind=4) :: nsize,nshape(1)
 nsize=size(numbers)
 nshape=shape(numbers)
 print *,nsize,nshape
End Program main

1 个答案:

答案 0 :(得分:1)

如果有人仍然感兴趣:

sizeof 是内存中对象的大小,以字节为单位。存在所有对象。警告:如果对象属于包含可分配对象的派生类型,则其大小不计算在内。

size 是数组类型对象中标量单位的数量,与其维度(...)无关。存在于数组类型的对象。

shape 实质上是在声明对象时在维度(...)中写的内容。存在于数组类型的对象。

示例:

integer(8),dimension(2,3,4) :: arr
print *, &
        sizeof(arr).eq.2*3*4*8, &
        size(arr).eq.2*3*4, &
        all(shape(arr).eq.(/2,3,4/))

必须返回T T T

相关问题