Fortran Programming Guide

Two-Dimensional Arrays

Rows and columns between C and Fortran are switched.

Table 11-8 Passing a Two-Dimensional Array

Fortran calls C 

C calls Fortran 

REAL Q(10,20)

...

Q(3,5) = 1.0

CALL FIXQ(Q)

...

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

void fixq_( float a[20][10] )

{

...

a[5][3] = a[5][3] + 1.;

...

}

extern void

qref_( int[][10], int *);

...

int m[20][10] = ... ;

int sum;

...

qref_( m, &sum );

...

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

SUBROUTINE QREF(A,TOTAL)

INTEGER A(10,20), TOTAL

DO I = 1,10

DO J = 1,20

TOTAL = TOTAL + A(I,J)

END DO

END DO

...