は違いは
subroutine fillName(person)
type(PersonType), intent(inout) :: person
person%name = "Name"
end subroutine
を持つか
subroutine fillName(person)
type(PersonType), pointer :: person
person%name = "Name"
end subroutine
は違いは
subroutine fillName(person)
type(PersonType), intent(inout) :: person
person%name = "Name"
end subroutine
を持つか
subroutine fillName(person)
type(PersonType), pointer :: person
person%name = "Name"
end subroutine
pointer
は裸の記述がありません特定の引数の要件があり、以下では実用的な違いは何ですか。基本的には、仮引数のperson
はポインタターゲットに関連付けられている必要があります。これは、割り当てまたは単純なポインタ割り当て(=>
)によって行うことができます。注意すべき重要な点は、サブルーチンの実行中にダミー引数person
のポインタの関連付けが変更された場合、渡された実際の引数に反映されることです。裸の記述は、ポインタの関連付けではなく、参照によって実際の引数を渡します。
私はキーワードが実用、 であると仮定した場合の作業が、intent(inout)
両者がより明示的であるため、その後、あなたが与える例では実用的な違いは、可読性だろう。
技術的な違いは、ポインタがヌルまたは未定義の場合がありますが、intent(inout)
の場合は変数を割り当てる必要があることです。ポインタは、サブルーチン内で関連付けまたは無効にすることもできますが、intent(inout)
の仮引数は使用できません。
pointer
またはintent(inout)
のいずれも指定しておらず、引数にポインタを渡す必要がある場合は、それを関連付ける必要があります。