Fortran(90)で(実数)配列のディープコピーが必要ですが、参照の仕組みを完全に理解していないため、取得方法がわかりません。直感的に、私はこれは私が欲しいものを私を得ることを期待する:Fortranのディープアレイコピー
do i=1,n
b(i) = a(i)
end do
しかし、最近b(1:n) = a(1:n)
は上記のコードと同等であることを私に指摘されました。直観的には、b(1:n) = a(1:n)
は、b(1:n)
の参照がメモリ内のa(1:n)
の位置を指し示すに過ぎないと予想します。
b(1:n) = a(1:n)
ディープコピーですか?どうして? b = a
とは対照的に、根本的な参照で何が起こっていますか?
@IanHこれは私が大したことを知っているものではないので、私は答えの配列に焦点を合わせました。興味深いのは、上記の例が派生型の場合ではなく、回答を投稿したい場合です。 – Chris
そのバブルの謝罪、私が決定したのは未完成のバブルで、質問には関係がないと決めました(ポスターには特にREAL変数が記載されています)。私はそれが投稿されたことを知らなかった。 – IanH
'b(1:n)= a(1:n)'と 'b = a'は等価ではありません。前者は、必要な再配分などをチェックしません。 –