C_F_POINTER — C를 Fortran 포인터로 변환
C_F_POINTER — C를 Fortran 포인터로 변환
C에서 받은 주소를 Fortran 포인터로 만들어 배열처럼 다루고 싶을 때가 있어요. C_F_POINTER는 C 포인터 CPTR의 대상을 Fortran 포인터 FPTR에 할당하고 그 형상(shape)을 지정해요.
본문
CALL C_F_POINTER(CPTR, FPTR[, SHAPE, LOWER])
설명(Description)
C_F_POINTER(CPTR, FPTR[, SHAPE, LOWER])는 C 포인터 CPTR의 대상을 Fortran 포인터 FPTR에 할당하고 그 형상을 지정해요. 배열 FPTR의 경우 하한은 LOWER가 있으면 그 값, 없으면 1이 돼요.
분류(Class)
서브루틴(Subroutine)
인자(Arguments)
CPTR—C_PTR타입의 스칼라예요.INTENT(IN)이에요.FPTR—cptr와 상호운용 가능한 포인터예요.INTENT(OUT)이에요.SHAPE— (선택)INTENT(IN)의INTEGER1차원 배열이에요.FPTR가 배열일 때만(그리고 그럴 때는 반드시) 있어야 해요. 크기는FPTR의 랭크와 같아야 해요.LOWER— (선택)INTENT(IN)의INTEGER1차원 배열이에요.SHAPE가 없으면 있어서는 안 돼요. 크기는FPTR의 랭크와 같아야 해요.
예제
program main
use iso_c_binding
implicit none
interface
subroutine my_routine(p) bind(c,name='myC_func')
import :: c_ptr
type(c_ptr), intent(out) :: p
end subroutine
end interface
type(c_ptr) :: cptr
real,pointer :: a(:)
call my_routine(cptr)
call c_f_pointer(cptr, a, [12])
end program main
C 루틴이 돌려준 cptr을 길이 12의 1차원 실수 배열 포인터 a로 연결하는 예제예요.
표준(Standard)
Fortran 2003 이상, LOWER 인자는 Fortran 2023 이상
같이 보기
C_LOC — 객체의 C 주소 얻기, C_F_PROCPOINTER — C를 Fortran 프로시저 포인터로 변환, C_F_STRPOINTER — C 문자열을 Fortran 문자열 포인터로 변환