Fortran-lbound抛出错误6366“;数组表达式的形状不一致;
所以我又被Fortran搞糊涂了。算了吧,不管怎样,我想写一个非常简单的例程,从数组的末尾去掉值。一切都很复杂,除了我想编写子程序,这样我就不必将输入数组的下限传递给它。下面是子程序:Fortran-lbound抛出错误6366“;数组表达式的形状不一致;,fortran,Fortran,所以我又被Fortran搞糊涂了。算了吧,不管怎样,我想写一个非常简单的例程,从数组的末尾去掉值。一切都很复杂,除了我想编写子程序,这样我就不必将输入数组的下限传递给它。下面是子程序: subroutine Strip(list,lstart, index) implicit none integer :: i, index, isize, tsize, lstart, istart real, dimension(:),
subroutine Strip(list,lstart, index)
implicit none
integer :: i, index, isize, tsize, lstart, istart
real, dimension(:), allocatable, intent(inout) :: list
real, dimension(:), allocatable :: tlist
isize = size(list)
tsize = index-1
print *, 'index', index
print *, 'isize', isize
print*, 'lbound', INT(lbound(list))
print*, 'tsize', tsize
istart = lbound(list) !<---- This lines throws the error
!These are commented out because everything below here works
!allocate(tlist(lstart:tsize))
!tlist = list(lstart:index-1)
!deallocate(list)
!call move_alloc(tlist,list)
end subroutine Strip
子程序条(列表、第一部分、索引)
隐式无
整数::i,index,isize,tsize,lstart,istart
实数、维度(:)、可分配、意图(inout)::列表
实型,维度(:),可分配::tlist
isize=大小(列表)
tsize=index-1
打印*,“索引”,索引
打印*,'isize',isize
打印*,'lbound',INT(lbound(列表))
打印*,'tsize',tsize
istart=lbound(列表) Lbound()
返回一个数组!阅读Fortran手册(RTFM),网址为
它返回一个数组,其元素数与数组的秩(“维”1D,2D,…)相同
要获取特定维度的单个数字,请使用可选参数DIM
istart = lbound(list, 1)
Lbound()
返回一个数组!阅读Fortran手册(RTFM),网址为
它返回一个数组,其元素数与数组的秩(“维”1D,2D,…)相同
要获取特定维度的单个数字,请使用可选参数DIM
istart = lbound(list, 1)
这是哪个编译器?不同的编译器有不同的错误消息。这是哪个编译器?不同的编译器有不同的错误信息。我读过一篇教程,上面说它返回一个整数。世界跆拳道联盟。谢谢你的帮助,如果这不能解决问题,我会给你回复的。好吧,这样就解决了这个问题,但是现在使用“deallocate(list)”和“move_alloc(tlist,list)”抛出访问冲突错误。我也不知道如何解决这个问题。您能帮忙吗?tsize和index-1的值相同吗?在这里您不需要allocate或deallocate,对tlist的赋值将完成分配(您使用的是ifort,所以使用版本17或add-standard语义)。类似地,move_alloc将释放列表。我猜你在某处破坏了记忆。将-CB添加到编译中可能会有所帮助,但是ifort在运行时还没有进行形状检查。Soooo…我应该如何更改函数来解决我的问题?而yaindex-1和tsize应该是相同的。没有完整的代码很难说。这是一个不同的问题,应该提出不同的问题。我同意Steve Lionel的上述建议。我读过一篇教程,上面说它返回一个整数。世界跆拳道联盟。谢谢你的帮助,如果这不能解决问题,我会给你回复的。好吧,这样就解决了这个问题,但是现在使用“deallocate(list)”和“move_alloc(tlist,list)”抛出访问冲突错误。我也不知道如何解决这个问题。您能帮忙吗?tsize和index-1的值相同吗?在这里您不需要allocate或deallocate,对tlist的赋值将完成分配(您使用的是ifort,所以使用版本17或add-standard语义)。类似地,move_alloc将释放列表。我猜你在某处破坏了记忆。将-CB添加到编译中可能会有所帮助,但是ifort在运行时还没有进行形状检查。Soooo…我应该如何更改函数来解决我的问题?而yaindex-1和tsize应该是相同的。没有完整的代码很难说。这是一个不同的问题,应该提出不同的问题。我同意史蒂夫·莱昂内尔的上述建议。