Pointers Fortran指针
我正在尝试使用已经存在的Pointers Fortran指针,pointers,fortran,Pointers,Fortran,我正在尝试使用已经存在的common块编写一个子例程。我不明白他们是如何使用指针功能的 有这样一个部分: parameter (ncvarmx=101) pointer (pfmxarcval,fmxarcval(ncvarmx,*))! max/min values for current postvalue and body ! min for this inc and ibody
common
块编写一个子例程。我不明白他们是如何使用指针功能的
有这样一个部分:
parameter (ncvarmx=101)
pointer (pfmxarcval,fmxarcval(ncvarmx,*))! max/min values for current postvalue and body
! min for this inc and ibody
! max for this inc and ibody
! min from begin to this inc and ibody
! max from begin to this inc and ibody
common/marc_archp/parcelcd,parcellbl,parcndcd,parcndlbl,pfmxarcval
real*8 fmxarcval
我基本上需要fmxarcval
中的值。我假设有三个,虽然它不是一个向量
如何使用这样的指针?这看起来像是使用了Cray指针的非标准但广泛实现的功能,不应与Fortran 90引入的指针概念混淆。我已经很久没有使用Cray指针了,所以我对它们的用法只有模糊的记忆,所以我不会提供可能不可靠的建议。但是,用克雷指针这个词武装起来,你最喜欢的搜索引擎就启动了。顺便说一句,我不明白为什么您假设
fmxarcval
中有3个值,您发布的代码片段中没有任何内容支持该假设。根据描述,我假设这3个值继承了x、y和z方向的值。我试试克雷指针。感谢您的提示。指针“pfmxarcval”似乎指向大小为“ncvarmx“x”*”的数组“fmxarcval”。这是如何在这里记录的:。另一方面,fmxarcval ist声明为数组。我不会更改它,因为它不是我的Commo块,并且被其他程序使用。因此,我将尝试找到解决问题的另一种方法。严格来说,指针是指针对象内存地址的整数表示。当指针与内存位置相关联时,指针对象成为取消引用指针的方式。实际上,指针对象成为地址为指针目标的变量的别名。您发布的代码段不包含指针指向内存位置的语句。如果代码可以工作,那么要么(a)不要用讨价还价来碰它,要么(b)将其重写为现代Fortran。我总是尝试采用后一种方法,但您似乎不得不采用formerI搜索指针指向的statament,但是可以找到它,我假设它在FEM子例程中。因此,我最好不要碰它,而是寻找另一种获取值的方法。谢谢你的帮助。