6

 

Fixed Arrays

 

For a fixed-array parameter, pass the same type and size, as in this example:

The C function, FixVec.c

 

void FixVec(int V[9], int *Sum)

 

{

 

int i;

 

*Sum = 0;

 

for (i = 0; i <= 8; i++)

 

*Sum = *Sum + V[i];

 

}

 

 

The Pascal main program,

FixVecMain.p

The commands to compile and execute FixVec.c and

FixVecMain.p

program FixVecMain(output); type

TVec = array [0..8] of integer;

var

V:TVec := [0, 1, 2, 3, 4, 5, 6, 7, 8]; Sum: integer;

procedure FixVec(var XV: TVec; var XSum: integer); external c;

begin

FixVec(V, Sum); writeln(Sum: 3); end. { FixVecMain }

hostname% cc -c FixVec.c

hostname% pc -calign FixVec.o FixVecMain.p hostname% a.out

36

The -calignoption is not needed for this example, but may be necessary if the array parameter is an array of aggregates.

The C–Pascal Interface

121