2011-02-02 1 views
3

차이는

subroutine fillName(person) 
    type(PersonType), intent(inout) :: person 

    person%name = "Name" 
end subroutine 

를 가진 또는

subroutine fillName(person) 
    type(PersonType), pointer :: person 

    person%name = "Name" 
end subroutine 

답변

2

pointer이 노출 된 설명이없는 특정 인수 요구 사항이 다음에 실제적인 차이가 무엇입니까. 기본적으로 더미 인수 person은 포인터 대상과 연결되어야합니다. 할당 또는 단순 포인터 할당 (=>)을 통해 이루어질 수 있습니다. 유의해야 할 점은 서브 루틴을 실행하는 동안 더미 인수 person의 포인터 연결에 대한 변경 사항은 전달 된 실제 인수에 반영된다는 것입니다. 맨 설명은 참조로 실제 인수를 전달하지만 포인터 연관은 전달하지 않습니다. 나는 키워드가 실제, 가정하면

1

다음 줄의 예에서 실제 차이는 가독성, 그들은 이후 작업하지만 intent(inout) 더 명시 적으로 모두 것이다.

기술적 인 차이점은 포인터가 null이거나 미정 인 반면, intent(inout)이면 변수를 할당해야한다는 것입니다. 포인터는 서브 루틴에서 연관되거나 무효화 될 수 있지만 intent(inout) 인 임시 인수는 포함 할 수 없습니다.

pointer 또는 intent(inout)을 지정하지 않은 경우 인수에 포인터를 전달하면 연결해야합니다.