gpt4 book ai didi

pointers - Fortran 90 数组按引用传递问题

转载 作者:行者123 更新时间:2023-12-02 17:31:44 25 4
gpt4 key购买 nike

如果我这样分配 F90 指针会发生什么:

real, pointer :: abc(:)

allocate abc (nx*ny*nz)

我将 abc 传递给子例程,我将其重新定义为

real arg1(nx,ny,xz)

这似乎工作正常。

但是如果我重新定义为二维数组,就会出现段错误。

real arg1(nx,ny)

使用上面重新排序的数组,它应该可以工作。为什么会失败?任何帮助将不胜感激。

谢谢。

最佳答案

它失败了,因为你在数组的大小上向编译器撒了谎。

在 Fortran 77 中,人们总是使用这些技巧,因为没有选择。在我们当前开明的时代,我们永远不应该做这些伎俩——只有 Fortran77 和 C 程序员才不得不诉诸这样的诡计。

根据changing array dimensions in fortran的答案,如果您想调整数组大小,或者只是使用不同的形状创建对它的引用,则可以使用 RESHAPE 内在函数,或使用数组指针。

关于pointers - Fortran 90 数组按引用传递问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9267067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com