C_LOC (The GNU Fortran Compiler)

### 8.61 `C_LOC` — Obtain the C address of an object ¶

Synopsis:

  `RESULT = C_LOC(X)`

Description:

  `C_LOC(X)` determines the C address of the argument.

Class:

  Inquiry function

Arguments:

  X | Shall have either the POINTER or TARGET attribute. It shall not be a coindexed object. It shall either be a variable with interoperable type and kind type parameters, or be a scalar, nonpolymorphic variable with no length type parameters.

Return value:

  The return value is of type `C_PTR` and contains the C address of the argument.

Example:

      subroutine association_test(a,b)
        use iso_c_binding, only: c_associated, c_loc, c_ptr
        implicit none
        real, pointer :: a
        type(c_ptr) :: b
        if(c_associated(b, c_loc(a))) &
           stop 'b and a do not point to same target'
      end subroutine association_test

Standard:

  Fortran 2003 and later

See also:

  `C_ASSOCIATED` — Status of a C pointer,
  `C_FUNLOC` — Obtain the C address of a procedure,
  `C_F_POINTER` — Convert C into Fortran pointer,
  `C_F_PROCPOINTER` — Convert C into Fortran procedure pointer