如果我有以下Fortran代码,请使用先前定义的TYPE数组:
subroutine
use mModule, only: myTypeObjects
TYPE (myType) :: myTypeReference
myTypeReference = myTypeObjects(1)
end
myTypeReference是否引用TYPE对象,还是进行复制?
答案 0 :(得分:0)
这是一个简短的小程序,输出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