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.