# CFI_address

C function prototype: Returns the C address of an object described by a C descriptor.

    void *CFI_address (const CFI_cdesc_t *dv,
                       const CFI_index_t subscripts[]);

Formal Parameters:

dv | The address of a C descriptor describing the object. The object must not be an unallocated allocatable variable or a pointer that is not associated.
subscripts | A null pointer or the address of an array of type CFI_index_t. If the object is an array, subscripts must be the address of an array of type CFI_index_t with at least n elements, where n is the rank of the object. The value of subscripts [i] must be within the bounds of dimension i specified by the `dim` member of the C descriptor.

## Result Value

If the object is an array of rank n, the result is the C address of the element of the object that the first n elements of the subscripts argument would specify if used as subscripts. If the object is scalar, the result is its C address.

## Example

If dv is the address of a C descriptor for the Fortran array A declared as follows:

    REAL(C_FLOAT) :: A(100, 100)

then the following code calculates the C address of A(5, 10):

    CFI_index_t subscripts[2];
    float *address;
    subscripts[0] = 4;
    subscripts[1] = 9;
    address = (float *) CFI_address(dv, subscripts );

Parent topic: C to D

## See Also

C Structures Typedefs and Macros for interoperability
Interoperating with arguments using C descriptors