나에게 전달 된 일부 포트란 코드를 이해하려고합니다. 이것은 서브 루틴의 인수리스트입니다 :매개 변수 목록 : 이름 뒤에 오는 괄호의 의미
INTEGER, INTENT(IN) :: NKT
REAL, INTENT(IN) :: NW2(NKT), VAR, SUE
REAL, INTENT(INOUT) :: MYSPC(NKT,NKT)
나는 NKT, VAR 및 SUE의 선언을 이해합니다. 그러나 NW2 (NKT), MYSPC (NKT, NKT)에서 "(NKT)"와 "(NKT, NKT)"의 의미는 무엇입니까? NKT는 배열 NW2 및 MYSPC의 크기를 지정합니까? 또는 서브 루틴이 전달 된 값을 NW2의 NKT 위치에 저장한다고 말하고 있습니까?
변수 뒤에()를 사용하면 정말 혼란 스럽습니다. Nyhoff의 "FORTRAN 90 소개"책에서는 다루지 않습니다. 어떤 도움을 주시면 감사하겠습니다.
이 예에서는
아마도 책을 신중하게 읽지 않을 것입니다. –
나는'fortran' 질문이 어떻게 생겼는지 보려고이 질문을 클릭했습니다 ... : D – Andrew
당신이 우연히 발견 한 이유는 아마도 배열 선언의 스타일뿐만 아니라 배열을 전달하는 방법 일 것입니다 절차에. 귀하의 예제에서,'NW2'와'MYSPC'는 * 자동 * 배열이며,'NKT' 인수로부터 자동으로 크기를 얻습니다. Fortran 90 이후 버전에서는,'NW2 (:)'와'MYSPC (:, :)'와 같은 * assumed-shape * 배열을 사용하여 실제로 이것을 볼 수 있습니다. 배열은 명시 적으로 요구하지 않고 전달 된 실제 인수의 모양을 가정합니다 여기에서 한 것처럼 크기를 전달하십시오. – sigma