Pointers Fortran中的无效指针

Pointers Fortran中的无效指针,pointers,fortran,Pointers,Fortran,我在Fortran代码中添加了一个模块,并遇到了以下问题。我有一个派生数据类型Info,它包含几个其他变量,其中包括一个4D指针数组(它是一个hydro代码,所以它是3个空间组件和1个变量组件)。为了使我的子程序更易于阅读,我只需制作一个指针q,并指向Info%q,如下所示: real,pointer::q(:,:,:,:) q=>Info%q ... some work on q 我遇到的问题是:我应该在null(q)之前使用deallocate(q)?

我在Fortran代码中添加了一个模块,并遇到了以下问题。我有一个派生数据类型
Info
,它包含几个其他变量,其中包括一个4D指针数组(它是一个hydro代码,所以它是3个空间组件和1个变量组件)。为了使我的子程序更易于阅读,我只需制作一个指针
q
,并指向
Info%q
,如下所示:

    real,pointer::q(:,:,:,:)
    q=>Info%q
    ...
    some work on q
我遇到的问题是:我应该在
null(q)
之前使用
deallocate(q)
?或者,由于
q
指向代码中其他地方所需的数组,我是否应该使用
nullify


谢谢你的帮助。

仅无效!否则原始指针将未定义,数组将不再存在

这是我认为会发生的事情,但不是100%积极的。谢谢你的帮助!如果它只是为了可读性,并且您的编译器支持它,那么请使用F2003的关联构造。在这种情况下使用指针可能会阻止编译器进行一些优化。我将进一步研究
关联
,感谢您提供指针;)(那件事我实在忍不住,对不起)