在矢量(一个简单的数字序列)的情况下,我不明白大小和形状之间的区别。
附带的脚本返回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
答案 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