我有一个问题和一个问题(我认为它们是相关的。)>
问题:我可以在Fortran 90中使用定义为指针的指针数组吗?
type string character, pointer :: str(:) end type type(string), pointer :: arr(:)
问题:我有代码(请参阅下文),在最后一次写入中,ifort 11.1给出了段错误。其他编译器,例如gfortran 4.6.3,ifort 11.1.072、12.0.1,...,都可以正常工作]
您可以将代码视为模拟Python附加函数。
program test implicit none type string integer, pointer :: key character, pointer :: str(:) end type type(string), pointer :: arr(:), tmp(:) allocate(arr(1)) allocate(arr(1)%str(1)) arr(1)%str(1) = 'A' write(6,*) arr(1)%str(1) ! -------------------- tmp => arr write(6,*) tmp(1)%str(1) ! -------------------- nullify(arr) allocate(arr(2)) arr(1)%str => tmp(1)%str write(6,*) arr(1)%str(1) end program
预期结果是:
A A A
ifort 11.1在最后一行给出分段错误。现在出现了奇怪的事情。如果注释掉字符串类型中的整数声明,则使用ifort 11.1也将获得预期的结果。
这是编译器问题,还是我在使用非标准的Fortran 90结构?
我有一个问题和一个问题(我认为它们是相关的)。问题:我可以在Fortran 90中使用定义为指针的指针数组吗?类型字符串字符,指针:: str(:)结束类型...
您的代码可以使用Intel Fortran 13.0.something毫无问题地编译和执行。连同您在其他编译器和编译器版本上的经验,这确实暗示了一个编译器错误,尽管现已纠正。
我不完全确定Python append函数的作用,但是如果您正在寻找一种Fortran方式来制作其内容(和长度)可以动态变化的字符串,则应认真考虑使用Fortran 2003自动分配功能。例如,您可以定义这样的字符串: