相关疑难解决方法(0)

Fortran:整数*4 vs整数(4)vs整数(kind = 4)

我正在尝试学习Fortran,我看到很多不同的定义被传递,我想知道他们是否想要完成同样的事情.以下有什么区别?

  • integer*4
  • integer(4)
  • integer(kind=4)

fortran language-lawyer

55
推荐指数
3
解决办法
3万
查看次数

在Fortran中分配时自动进行数组分配

我们最近发现我们正在为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)

memory arrays fortran gfortran

11
推荐指数
2
解决办法
2577
查看次数

标签 统计

fortran ×2

arrays ×1

gfortran ×1

language-lawyer ×1

memory ×1