Fortran Coder

查看: 4129|回复: 12
打印 上一主题 下一主题

[指针] Type 包含 allocatable 数组

[复制链接]

238

帖子

0

主题

0

精华

版主

World Analyser

F 币
642 元
贡献
470 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
楼主
发表于 2023-3-25 08:00:30 | 显示全部楼层
根据我的习惯,做了一些修改。

我的有些习惯不是必须的,但我个人认为会让更清晰。

[Fortran] 纯文本查看 复制代码
type T_mytype !类型名做个区分
  sequence
  integer,allocatable:: array_type(:) !非必要不写dimension
  integer:: other_variables(10)
end type T_mytype
!必要写 dimension 的情况是,需要大量定义相同大小尺寸的多个数组
type(T_mytype),allocatable:: array_main(:)
integer :: j
allocate(array_main(3)) !先分配array_main
do j = 1 , size(array_main)
  allocate(array_main(j)%array_type(10)) !再逐个分配array_type
end do
!allocate(array_type(10)) !这句多余,且无意义

end

238

帖子

0

主题

0

精华

版主

World Analyser

F 币
642 元
贡献
470 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
沙发
发表于 2023-3-26 11:42:18 | 显示全部楼层
改成
read(fid_segy) traces(i)%header ,traces(i)%idata ! 读取前500道
就行了。
带有可分配数组的 type,不能整体读写。

238

帖子

0

主题

0

精华

版主

World Analyser

F 币
642 元
贡献
470 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
板凳
发表于 2023-3-26 15:14:57 | 显示全部楼层
风平老涡 发表于 2023-3-26 11:50
read语句不能直接读取type类变量。

不含可分配数组和指针的派生类型是可以直接整体读写的。

238

帖子

0

主题

0

精华

版主

World Analyser

F 币
642 元
贡献
470 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
地板
发表于 2023-3-27 08:30:40 | 显示全部楼层
抱歉,我对其他语言了解很少。
但是 C/C++ 也有同样的问题,如果包含指针(指向一个分配出来的数组),那么读取的是指针而不是指针指向的目标。
此外,C/C++的原生指针(非容器类),编译器并不存储指向目标数组的大小,所以更没法整体读取数组。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-7 05:01

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表