您好,请教一个Fortran调用C返回实数数组问题。之前群主在论坛里写的一个Fortran调用C返回一个数的例题,我想问问,如何返回一个数组呢?在群主之前的例题上修改了一点,结果还是有问题。我只是想实现在对数组中每个元素加1的结果再返回到Fortran中来,结果是只实现了第一个元素加1,别的不行
C程序:
[C] 纯文本查看 复制代码 #include <stdlib.h>
#include <stdio.h>
#include <string.h>
double c_add(double a[], int n)
{
int i;
double s=0;
double *xx ;
xx = calloc(n,sizeof(double));
for(i=0;i<n;++i)
xx=a+1;
printf("n/", xx );
return *xx;
}
Fortran程序:
[Fortran] 纯文本查看 复制代码 module interfaces
interface
real(8) function add(a,n) Bind( C , Name = "c_add" )
use ,Intrinsic::ISO_C_Binding
type(C_PTR) , value :: a
integer , value :: n
end function add
end interface
end module interfaces
program main
use interfaces
use , intrinsic :: ISO_C_Binding
implicit none
integer::i;
real(8) , target :: x(5) = [0.1,0.2,0.3,0.4,0.5]
do i=1,size(x)
write(*,*) add( c_loc(x) , size(x) )
end do
end program main
|