0

每当我为参数分配新值时,都会出现总线错误。我不明白我是如何指向不存在的记忆的。我应该可以访问这个地址,因为它在参数列表中声明,除非 Fortran 不允许在没有一些特殊声明的情况下修改参数。我的其余代码可以正常工作。我已将其隔离为简单的此任务。

我正在从 OS X 的终端运行 gfortran (不确定哪个版本,手头)。

SUBROUTINE p_list (c_number, c_matrix)
    INTEGER     c_number
    INTEGER     c_matrix(8000,20)
!   ... 
    c_number = 1000
!   ...
END SUBROUTINE p_list
4

1 回答 1

3

你怎么称呼这个?我不知道现代的 FORTRAN,但我知道使用早期版本的 FORTRAN,您可以通过传入一个常量(例如,通过调用 p_list(0, my_matrix))使这样的程序崩溃。这是因为 FORTRAN 通过引用隐式传递所有内容,包括常量(!)

于 2010-12-13T12:30:54.653 回答