추가 처리를 위해 사용자 배열의 주소를 저장하는 절차를 작성하려고합니다. 문제는이 테스트 프로그램에 캡슐화되어 있습니다.다른 유형을위한 하나의 포인터 Fortran
program test_ptr
real(4), target, allocatable :: i4(:,:)
real(8), target, allocatable :: i8(:,:)
real(4), pointer :: p(:,:)
allocate(i4(2,2))
allocate(i8(2,2))
p => i4 ! ok
p => i8 ! compile error
end
컴파일러는 다른 유형의 다른 포인터를 제안합니다. 그러나 real (4) 및 real (8)에 대한 별도의 포인터를 만들고 싶지 않습니다. 나는 일반적이고 압축 된 솔루션을 만들고 다른 유형의 데이터를위한 하나의 포인터를 갖기 위해 노력하고 있습니다. 가능한가?
고맙습니다.하지만 어떻게 작동하는지 이해할 수 없습니다. 'p = c_ptr (r4)'이면, 어떻게하면 그 아래에 데이터를 얻을 수 있습니까 (C의'* p'와 같은)? – vovo
그런 다음 포트란'포인터 '가 데이터를 가리 키도록 설정하는'c_f_pointer()'서브 루틴을 사용합니다. 'c_ptr'에 저장되지 않기 때문에 타입을 알아야합니다. –