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