arrays - Fortran 字符数组

标签 arrays fortran

我正在寻找一种在同一程序单元中使用两个并发数组来处理字符信息主体的方法。

比如我要

CHARACTER(1) Array1(40960)

CHARACTER(4096) Array2(10)

指向相同的信息体。

请注意,在此示例中我一直很小心,因为数组的维度和秩的乘积是相同的。

我希望解决方案是可分配的,所以我认为EQUIVALENCECOMMON 行不通。

有什么想法吗?

最佳答案

像这样:

use, intrinsic :: iso_c_binding
...
character, dimension(40960), target :: array1
character(4096), dimension(:), pointer :: array2
...
call c_f_pointer (c_loc(array1), array2, [10])

现在,array2 指向与 array1 相同的存储。如果需要,您可以使 array1 可分配 - 在对 c_f_pointer 的调用中,最后一个参数是一个数组构造函数,其中包含新分配指针的维度信息。不要忘记 array1 上的 TARGET 属性。

关于arrays - Fortran 字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18861155/

相关文章:

java - 检查一个数组的元素是否存在于另一个数组中(JAVA)

javascript - 如何在 javascript 或 jQuery 中将 "[array]"转换为 [array]

arrays - 如何就地洗牌

javascript - splice() 无法正常工作

arrays - 派生类型访问时间与数组访问时间

c++ - 如何将 C++ 指针传递给 Fortran?

c++ - 从 fortran 调用 c++ sub 时运行时中止

performance - 避免循环中的条件语句

multithreading - 如何在 openmp 的并行部分中调用的子例程中保持变量私有(private)?

javascript - 如果有条件地检查 react jsx 中的空值 [es6]