我正在尝试学习Fortran,我看到很多不同的定义被传递,我想知道他们是否想要完成同样的事情.以下有什么区别?
integer*4
integer(4)
integer(kind=4)
我们最近发现我们正在为Fortran中的未分配数组进行分配.GNU gfortran编译器没有捕获错误,代码在OSX和Linux下运行.但是,IBM Power PC上的代码分段错误相同.
我的问题是,以下代码是否正确?似乎分配给的数组array
在某些体系结构上自动分配内存,但在其他体系结构上则不然.是否有实施具体细节在这里工作?
代码是混合的C/Fortran代码:
#include <stdlib.h>
void assign_array_(double x[], int* n);
void print_array_();
int main()
{
int n,i;
double *x;
n = 5;
x = (double*) malloc(sizeof(double)*n);
for (i = 0; i < n; i++)
x[i] = (double) i;
assign_array_(x,&n);
print_array_();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
和Fortran代码:
MODULE test_mod
DOUBLE PRECISION, ALLOCATABLE, DIMENSION(:) :: array
integer :: nsize
END MODULE test_mod
SUBROUTINE assign_array(x,n)
USE test_mod
IMPLICIT NONE
INTEGER :: n
DOUBLE PRECISION :: x(n)
CALL test_allocated()
array = …
Run Code Online (Sandbox Code Playgroud)