|
1F 币
本人刚接触fortran不就,请教大家个问题:!======================================
我自己定义了一个数据结构,比如:
type tttt
integer:: num
character(len=15) :: name1
end type tttt
然后我希望在主程序中使用该结构,比如:
program hello
!!下面两行会出错,因为tttt没有定义
type(tttt),pointer::ps
type(tttt),target :: s
s%num=1
s%name1="wangwei"
ps=>s
!!!我还想对结构体指针利用过程重新赋值,代码如下
call mod_struct(ps)
end program hello
子过程如下:
subroutine mod_struct(struct)
type(tttt),pointer:: struct
struct%name1="xie"
end
!====================================
中间会牵涉到这么几个知识点,我不太明白:
1)如何将定义的结构体,比如保存到头文件里,随时可以使用?即全局变量和共享数据结构的问题。
2)假如第一步成功了,我的mod_struct对不对?
我曾把结构体的定义放到 program和sunroutine里,这样编译是能过去的,胆汁性会有segment fault。
原因大概是指针没有指到实体,所以报错了。我怎样改才可以?
|
最佳答案
查看完整内容
传递指针的话,需要用 interface,而书写到 module 里,可以避免手动书写 interface
[mw_shl_code=fortran,true]module typedef
Implicit None
type tttt
integer:: num
character(len=15) :: name1
end type tttt
end module typedef
module mod_struct_mod
use typedef
Implicit None
contains
subroutine mod_struct(struct)
type(tttt),pointer:: struct
struct%name1="xie"
end subroutine ...
|