2013-01-12 42 views
3

我正在向Fortran代碼中添加一個模塊,並且遇到了以下問題。我有一個導出的數據類型Info,它包含幾個其他變量,其中包括一個4D指針數組(它是一個加密碼,所以它是3個空間組件和1個可變組件)。爲了使我的子程序更容易閱讀,我只是做一個指針q並指向Info%q,如下所示:Fortran中的空指針

real,pointer::q(:,:,:,:) 
    q=>Info%q 
    ... 
    some work on q 

我遇到的問題是:我應該使用deallocate(q)nullify(q)過嗎?或者,因爲q指向代碼中其他位置所需的數組,所以我應該只使用nullify

感謝您的幫助。

+3

如果它只是爲了提高可讀性,並且您的編譯器支持它,請改用F2003的ASSOCIATE結構。在這種情況下使用指針可能會阻止編譯器能夠做出的某些優化。 – IanH

+0

我會進一步調查'associate',謝謝你的指針;)(我真的不能幫助自己,對不起) –

回答

5

只有無效!否則,原始指針將是未定義的,並且數組將不再存在!

+0

這是我認爲會發生,但不是100%正面。謝謝你的幫助! –