Fortran Programming Guide

Pointers

A FORTRAN 77 pointer can be passed to a C routine as a pointer to a pointer because the Fortran routine passes arguments by reference.

Table 11-11 Passing a FORTRAN 77 POINTER

Fortran calls C 

C calls Fortran 

REAL X

POINTER (P2X, X)

EXTERNAL PASS

P2X = MALLOC(4)

X = 0.

CALL PASS(X)

...

------------------------------

void pass_(x)

int **x;

{

**x = 100.1;

}

extern void fpass_;

...

float *x;

float **p2x;

fpass_(p2x) ;

...

------------------------------

SUBROUTINE FPASS (P2X)

REAL X

POINTER (P2X, X)

X = 0.

...

C pointers are compatible with Fortran 90 (release 2.0) scalar pointers, but not array pointers.