Fortran Coder

查看: 3104|回复: 5
打印 上一主题 下一主题

[派生类型] 在使用type时如何将变量顺便设置成整型?

[复制链接]

48

帖子

15

主题

0

精华

熟手

F 币
179 元
贡献
104 点
跳转到指定楼层
楼主
发表于 2023-3-8 17:11:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大神们我又来了。代码如下:
[Fortran] 纯文本查看 复制代码
1type Subblocks
2  integer*4  :: row
3  integer*4  :: coL
4end type Subblocks

[Fortran] 纯文本查看 复制代码
1type blocks
2  integer*4  :: row1,row2,coL1,coL2
3  integer*4  :: rowm,coLm
4  integer*4  :: dad
5  integer*4  :: son(4)
6  integer*4  :: bnum
7  type(Subblocks), allocatable :: iSubblocks(:)
8end type blocks

[Fortran] 纯文本查看 复制代码
1type(blocks), allocatable :: iblocks(:)


这段声明我是想完成这样一个操作:iblocks(i)%isubblocks(j)%coL


我想输出iblocks(i)、iblock(i)%isubblocks(j)、isubblocks(i)都是整数,想问问应该怎么声明呢?
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

48

帖子

15

主题

0

精华

熟手

F 币
179 元
贡献
104 点
沙发
 楼主| 发表于 2023-3-8 17:12:15 | 只看该作者
[Fortran] 纯文本查看 复制代码
1type(Subblocks), allocatable  :: iSubblocks(:)

213

帖子

2

主题

0

精华

宗师

F 币
2142 元
贡献
875 点

规矩勋章

板凳
发表于 2023-3-8 21:26:06 | 只看该作者
本帖最后由 风平老涡 于 2023-3-8 23:38 编辑

[Fortran] 纯文本查看 复制代码
01type Subblocks 
02    integer*4  :: row
03    integer*4  :: coL
04end type Subblocks
05 
06type blocks 
07    integer*4  :: row1,row2,coL1,coL2
08    integer*4  :: rowm,coLm
09    integer*4  :: dad
10    integer*4  :: son(4)
11    integer*4  :: bnum
12    type(Subblocks), allocatable :: iSubblocks(:)
13end type blocks
14 
15type(blocks), allocatable :: iblocks(:)
16type(Subblocks), allocatable  :: iSubblocks(:)
17integer :: i, n, m
18 
19 
20 
21n = 10
22m = 20
23 
24allocate(iblocks(n))
25 
26do i = 1, n
27   allocate(iblocks(i) % isubblocks(m))
28end do
29 
30allocate(isubblocks(m))
31 
32print *, iblocks(3) % colm, iblocks % isubblocks(2) % col, isubblocks(3) % col


衍生类型的变量名(iblocks % isubblocks) 与 变量名(isubblocks)不存在冲突。

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1647 元
贡献
709 点

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

地板
发表于 2023-3-9 08:41:19 | 只看该作者
iblocks(i)、iblock(i)%isubblocks(j)、isubblocks(i) 这些都是结构体(或叫派生类型),怎么能是整数呢?做不到的。

48

帖子

15

主题

0

精华

熟手

F 币
179 元
贡献
104 点
5#
 楼主| 发表于 2023-3-9 11:20:29 | 只看该作者
风平老涡 发表于 2023-3-8 21:26
[mw_shl_code=fortran,true]
type Subblocks  
    integer*4  :: row

太厉害了,我想了好久,才想明白问题所在,做出差不多得声明类型。但是不及您的美观、透彻。感谢!

48

帖子

15

主题

0

精华

熟手

F 币
179 元
贡献
104 点
6#
 楼主| 发表于 2023-3-9 11:21:41 | 只看该作者
fcode 发表于 2023-3-9 08:41
iblocks(i)、iblock(i)%isubblocks(j)、isubblocks(i) 这些都是结构体(或叫派生类型),怎么能是整数呢? ...

是的,后来我才稍微想明白,现在理解了,十分感谢您的解惑!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2025-1-14 05:37

Powered by Discuz! X3.4

© 2013-2025 Comsenz Inc.

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