小编Rui*_*zhi的帖子

指向包含可分配数组的派生类型的指针

一般来说,我想重命名派生类型中的可分配变量,这些变量通过子例程参数传递.使用'derived%type_xx'编写所有内容并不是那么令人愉快.此外,我不想花费额外的内存来将派生类型的值复制到一个新的变量,这需要新的分配内存.此外,我知道可分配数组比指针更受欢迎,原因有很多.我尝试定义指向可分配变量的指针,但失败了.我试过这个,因为我想简化我的代码,既可读也不太长.我想知道是否有办法实现目标?谢谢.

这是演示代码:

Module module_type
IMPLICIT NONE
    TYPE type_1
        REAL,ALLOCATABLE                  ::      longname_1(:), longname_2(:)
    END TYPE
END MODULE

!------------------------------------------------------------------------------------------
SUBROUTINE TEST(input)
    USE MODULE module_type
IMPLICIT NONE
    TYPE(type_1)                          ::      input
    input%longname_1 = input%longname_1 + input%longname_2   ! Use one line to show what I mean
END SUBROUTINE
Run Code Online (Sandbox Code Playgroud)

这是失败的:

Module module_type
IMPLICIT NONE
    TYPE type_1
        REAL,ALLOCATABLE                  ::      longname_1(:), longname_2(:)
    END TYPE
END MODULE

!------------------------------------------------------------------------------------------
SUBROUTINE TEST(input)
    USE MODULE module_type
IMPLICIT NONE
    TYPE(type_1),TARGET                    ::      input

    REAL,POINTER                           ::      a => input%longname_1 &
                                                 & b => input%longname_2

    a …
Run Code Online (Sandbox Code Playgroud)

fortran pointers derived-types allocatable-array

3
推荐指数
1
解决办法
1372
查看次数