### 8.40 `C_F_POINTER` — Convert C into Fortran pointer

Description:
  `C_F_POINTER(CPTR, FPTR[, SHAPE])` assigns the target of the C pointer CPTR to the Fortran pointer FPTR and specifies its shape.
Standard:
  Fortran 2003 and later
Class:
  Subroutine
Syntax:
  `CALL C_F_POINTER(CPTR, FPTR[, SHAPE])`
Arguments:

  CPTR | scalar of the type `C_PTR`. It is `INTENT(IN)`.
  FPTR | pointer interoperable with cptr. It is `INTENT(OUT)`.
  SHAPE | (Optional) Rank-one array of type `INTEGER` with `INTENT(IN)`. It shall be present if and only if fptr is an array. The size must be equal to the rank of fptr.

Example:

                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

See also:
  C_LOC, C_F_PROCPOINTER