Types 创建对Fortran类型的引用
如果我有以下Fortran代码,使用先前定义的类型数组:Types 创建对Fortran类型的引用,types,fortran,Types,Fortran,如果我有以下Fortran代码,使用先前定义的类型数组: subroutine use mModule, only: myTypeObjects TYPE (myType) :: myTypeReference myTypeReference = myTypeObjects(1) end myTypeReference是引用类型对象,还是进行复制?这里有一个简短的小程序,它输出1,2。 因此,这不是以python/C++的方式思考的参考。 a是它自己的对象,因此隐式赋值操作符执行默认复制
subroutine
use mModule, only: myTypeObjects
TYPE (myType) :: myTypeReference
myTypeReference = myTypeObjects(1)
end
myTypeReference是引用类型对象,还是进行复制?这里有一个简短的小程序,它输出1,2。 因此,这不是以python/C++的方式思考的参考。
a
是它自己的对象,因此隐式赋值操作符执行默认复制。但是,对于特定类型,可以重写此赋值运算符
Fortran没有程序员可以直接操作的“引用”。虽然所有函数参数都是通过引用传递的,除非明确说明,但这对程序员来说是隐藏的
如果您想要类似引用的行为,Fortran确实有“指针”,可以做类似的事情。Fortran指针与“C”指针不同,所以请先阅读它们
program blah
implicit none
type :: blah_t
integer :: val
end type
type(blah_t) :: a,b
b%val = 2
a = b
a%val = 1
write(*,*) a,b
end program blah
这不是有效的Fortran。请发布一段可编译的代码片段。也许到那时,你的意思就清楚了……对不起,我在声明myTypeReference时犯了语法错误。假设我的类型一直在其他地方,我仍然不知道你的意思。。。而且它仍然不是有效的Fortran。投票结束。