После некоторого обсуждения вопроса, найденного здесь Правильное выполнение процедуры Final в Fortran Я подумал, что будет полезно узнать, когда функция с результатом указателя подходит для использования с нормальным или назначением указателя,Например, учитывая эту простую функцию
function pointer_result(this)
implicit none
type(test_type),intent(in) pointer :: this
type(test_type), pointer :: pointer_result
allocate(pointer_result)
end function
, я бы обычно делал test=>pointer_result(test)
, где test
было объявлено с атрибутом pointer
.Хотя обычное присвоение test=pointer_result(test)
является законным, оно означает что-то другое.
Что подразумевается под обычным назначением по сравнению с назначением указателя?
Когда имеет смысл использовать одно или другое назначение?