Fortran Coder

查看: 8103|回复: 7
打印 上一主题 下一主题

[派生类型] 关于type 动态数组传递

[复制链接]

67

帖子

16

主题

0

精华

专家

F 币
275 元
贡献
201 点
跳转到指定楼层
楼主
发表于 2020-10-14 18:17:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wxy 于 2020-10-14 20:56 编辑

我在type中定义了一个动态数组用于传递数组,用gfortran(linux)编译,数组传递正常,但是用ifort编译动态数组传递出来是空的,其他参数传递正常(图二是数组传入,图三是调用的地方),不知道应该怎么改写
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

81

帖子

0

主题

0

精华

专家

F 币
471 元
贡献
232 点

规矩勋章新人勋章元老勋章

QQ
沙发
发表于 2020-10-14 22:10:12 | 只看该作者
Allocate( da%obs_date(row) )
这样就行了。不要重新定义一个 integer , allocatable :: obs_date(:)
没什么意义嘛。

或者,你需要用指针?
integer , pointer :: obs_date(:)
obs_date => da%obs_date
??

彼岸,有永恒的守候...

67

帖子

16

主题

0

精华

专家

F 币
275 元
贡献
201 点
板凳
 楼主| 发表于 2020-10-14 22:38:55 | 只看该作者
青衣巷 发表于 2020-10-14 22:10
Allocate( da%obs_date(row) )
这样就行了。不要重新定义一个 integer , allocatable :: obs_date(:)
没什 ...

好的 谢谢 我试一下

67

帖子

16

主题

0

精华

专家

F 币
275 元
贡献
201 点
地板
 楼主| 发表于 2020-10-15 09:49:30 | 只看该作者
青衣巷 发表于 2020-10-14 22:10
Allocate( da%obs_date(row) )
这样就行了。不要重新定义一个 integer , allocatable :: obs_date(:)
没什 ...

可以了 非常感谢

3

帖子

0

主题

0

精华

新人

F 币
22 元
贡献
10 点
5#
发表于 2020-10-16 09:42:01 | 只看该作者
一般可以直接申请空间给对象子成员,不过肯定要比c++略麻烦。

2022

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1598 元
贡献
689 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

6#
发表于 2020-10-17 09:40:28 | 只看该作者
mapoet 发表于 2020-10-16 09:42
一般可以直接申请空间给对象子成员,不过肯定要比c++略麻烦。

哪儿比C++麻烦了?

3

帖子

0

主题

0

精华

新人

F 币
22 元
贡献
10 点
7#
发表于 2023-11-13 08:58:01 | 只看该作者
fcode 发表于 2020-10-17 09:40
哪儿比C++麻烦了?

没有析构函数,可以自动释放内存。

213

帖子

2

主题

0

精华

宗师

F 币
2131 元
贡献
875 点

规矩勋章

8#
发表于 2023-11-13 10:50:20 | 只看该作者
mapoet 发表于 2023-11-13 08:58
没有析构函数,可以自动释放内存。

可以用“final subroutine", 有同样作用。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-11-23 11:11

Powered by Tencent X3.4

© 2013-2024 Tencent

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