我想实现以下目标:
使用自定义类型数据(比如 A)的第一个元素的指针来引用 A
我创建了以下代码原型:
program test
implicit none
type foo
integer i
integer j
end type foo
type(foo), target :: a
type(foo) b
integer, pointer :: ai
a%i = 1
a%j = 2
ai => a%i
print *, "Address of a is", loc(a)
b = transfer(ai, b)
print *, "The values of a are:", a%i, a%j
print *, "Address of b is", loc(b)
print *, "The values of b are:", b%i, b%j
end program test
我希望 的值b
应该等于a
,但我在计算机中得到的结果为
Address of a is 140736918227392
The values of a are: 1 2
Address of b is 140736918227376
The values of b are: 1 0
的值b%j
不同于 的地方a%j
。怎么了?
提前致谢!
编辑:我的目的是向用户隐藏定义的类型(比如foo
),并且只让用户访问foo
(比如数组)的第一部分,当用户提供该数组时,我可以获得foo
. 这是一种封装。用户可以从键入“%”中解放出来。