Jaka jest wyraźna różnica między zamiarami fortran (in, out, inout)?
Po chwili szukania w książkach, tutaj na stackoverflow i ogólnie w Internecie, odkryłem, że trudno jest znaleźć proste wyjaśnienie rzeczywistych różnic między intencjami argumentów fortran. Sposób, w jaki to zrozumiałem, jest następujący:
intent(in)
- Rzeczywisty argument jest kopiowany do fikcyjnego argumentu przy wpisie.intent(out)
- Fikcyjny argument wskazuje na rzeczywisty argument (oba wskazują na to samo miejsce w pamięci).intent(inout)
- fałszywy argument jest tworzony lokalnie, a następnie kopiowany do rzeczywistego argumentu po zakończeniu procedury.Jeśli moje zrozumienie jest poprawne, to chcę również wiedzieć, dlaczego ktoś zawsze chce korzystaćintent(out)
, ponieważintent(inout)
wymaga mniej pracy (bez kopiowania danych).