次の目標を達成したいと考えています。
自己定義型データ (たとえば 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
。一種のカプセル化です。ユーザーは「%」の入力から解放されます。