### 8.42 `C_LOC` — Obtain the C address of an object

Description:
  `C_LOC(X)` determines the C address of the argument.
Standard:
  Fortran 2003 and later
Class:
  Inquiry function
Syntax:
  `RESULT = C_LOC(X)`
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

See also:
  C_ASSOCIATED, C_FUNLOC, C_F_POINTER, C_F_PROCPOINTER