После некоторого поиска в книгах, здесь, в stackoverflow и в общей сети, я обнаружил, что трудно найти прямое объяснение реальных различий между аргументами fortran. То, как я это понял, заключается в следующем:
-
intent(in)
- Фактический аргумент копируется в фиктивный аргумент при входе. -
intent(out)
- фиктивный аргумент указывает на фактический аргумент (оба они указывают на одно и то же место в памяти). -
intent(inout)
- фиктивный аргумент создается локально, а затем копируется в фактический аргумент, когда процедура завершена.
Если мое понимание правильное, тогда я также хочу знать, почему вы когда-либо хотели использовать intent(out)
, поскольку intent(inout)
требует меньше работы (без копирования данных).