Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Types 创建对Fortran类型的引用_Types_Fortran - Fatal编程技术网

Types 创建对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是它自己的对象,因此隐式赋值操作符执行默认复制

如果我有以下Fortran代码,使用先前定义的类型数组:

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。投票结束。