【发布时间】:2012-09-19 02:59:33
【问题描述】:
我是该网站的新手,这看起来可能是一个获得一些提示和帮助(如果有)的地方。
我正在学习“C 调用 Fortran 子程序”,我对 C 有所了解,但对 Fortran 了解不多。
另外的一面:我看过一些例子,并且能够编译一些。
消极的一面:我有些失落。我有一个可以使用 C 或 Fortran 90 以及 print_matrix.f 和 print_matrix.c 设计的主程序。
在 main.c 程序中,
- 填充矩阵大小为 3 x 3 的 1-9 数组
- 调用 c 函数
- 调用 fortran 子程序
我已经有人口稠密的一面(它可能不准确),但我被困在子程序上。 fortran 和 C 的输出必须相同,它将使用 makefile 通过 print_matrix.f90 和 print_matrix.c 输出。我需要呼叫子程序部分的帮助,我只是不知道从哪里开始:(
我只是需要帮助,任何将不胜感激。
【问题讨论】:
-
你真的只限于 Fortran 90 吗?如果您可以使用 2003 版 Fortran 标准中的功能,那么 Fortran 和 C 之间的互操作性将会更加容易。
-
请记住,C 和 Fortran 以不同的方式存储矩阵。在 C 中,存储是行优先的,这意味着
mat[i][j]和mat[i][j+1]在内存中是相邻的。在 Fortran 中,使用了以列为主的存储,即mat(i,j)和mat(i+1,j)在内存中是相邻的。这意味着 Fortran 将 C 数组视为转置的,反之亦然,在两种语言中定义矩阵维度和迭代矩阵元素时,您必须牢记这一点。
标签: fortran90