在Fortran 90中,数组的下界(lower bound)和上界(upper bound)是数组的一个属性,它们定义了数组索引的有效范围。默认情况下,Fortran数组的下界是1,但可以通过在声明数组时指定下界来改变这一默认行为。
当你将一个数组复制到另一个可分配数组(allocatable array)时,新数组的大小(即上界和下界)通常会继承自源数组。然而,如果你在声明新数组时指定了不同的下界或上界,那么复制后的数组将会有不同的索引范围。
Fortran 90支持固定大小数组和可分配数组。固定大小数组在声明时必须指定大小,而可分配数组可以在运行时通过ALLOCATE
语句分配。
如果你在复制数组时遇到了下界或上界不保持的问题,可能是因为以下原因:
! 假设有一个源数组
INTEGER, DIMENSION(1:10) :: sourceArray
! 声明一个新的可分配数组,指定不同的下界
INTEGER, ALLOCATABLE, DIMENSION(:) :: destArray
! 分配新数组,并指定下界为0
ALLOCATE(destArray(0:9))
! 复制数组
destArray = sourceArray
! 错误的示例:未分配新数组
INTEGER, ALLOCATABLE, DIMENSION(:) :: destArray
destArray = sourceArray ! 这将导致错误
正确的做法是先分配新数组,然后再进行复制:
! 正确的示例:先分配后复制
ALLOCATE(destArray(1:10))
destArray = sourceArray
在Fortran 90中,复制数组到另一个可分配数组时,需要注意新数组的下界和上界。如果你希望保持源数组的下界和上界,确保在声明和分配新数组时使用相同的下界和上界。如果需要不同的索引范围,可以在声明新数组时指定不同的下界和上界,但要注意复制操作的正确性。
领取专属 10元无门槛券
手把手带您无忧上云