Fortran - 派生数据类型
Fortran 允许您定义派生数据类型。 派生数据类型也称为结构,它可以由不同类型的数据对象组成。
派生数据类型用于表示记录。 例如。 您想要跟踪图书馆中的图书,您可能需要跟踪每本书的以下属性 −
- Title
- Author
- Subject
- Book ID
定义派生数据类型
要定义派生数据类型,请使用type 和end type 语句。 。 type 语句定义了一种新的数据类型,为您的程序提供了多个成员。 类型声明的格式是这样的 −
type type_name declarations end type
这是声明 Book 结构的方式 −
type Books character(len = 50) :: title character(len = 50) :: author character(len = 150) :: subject integer :: book_id end type Books
访问结构成员
派生数据类型的对象称为结构。
可以在类型声明语句中创建 Books 类型的结构,例如 −
type(Books) :: book1
可以使用组件选择符 (%) 访问该结构的组件 −
book1%title = "C Programming" book1%author = "Nuha Ali" book1%subject = "C Programming Tutorial" book1%book_id = 6495407
请注意,% 符号前后没有空格。
示例
下面的程序说明了上述概念 −
program deriveDataType
!类型声明
type Books
character(len = 50) :: title
character(len = 50) :: author
character(len = 150) :: subject
integer :: book_id
end type Books
!声明类型变量
type(Books) :: book1
type(Books) :: book2
!访问结构的组件
book1%title = "C Programming"
book1%author = "Nuha Ali"
book1%subject = "C Programming Tutorial"
book1%book_id = 6495407
book2%title = "Telecom Billing"
book2%author = "Zara Ali"
book2%subject = "Telecom Billing Tutorial"
book2%book_id = 6495700
!显示信息
Print *, book1%title
Print *, book1%author
Print *, book1%subject
Print *, book1%book_id
Print *, book2%title
Print *, book2%author
Print *, book2%subject
Print *, book2%book_id
end program deriveDataType
当上面的代码被编译并执行时,会产生以下结果 −
C Programming Nuha Ali C Programming Tutorial 6495407 Telecom Billing Zara Ali Telecom Billing Tutorial 6495700
结构体数组
您还可以创建派生类型的数组 −
type(Books), dimension(2) :: list
数组的各个元素可以通过以下方式访问 −
list(1)%title = "C Programming" list(1)%author = "Nuha Ali" list(1)%subject = "C Programming Tutorial" list(1)%book_id = 6495407
下面的程序说明了这个概念 −
program deriveDataType
!类型声明
type Books
character(len = 50) :: title
character(len = 50) :: author
character(len = 150) :: subject
integer :: book_id
end type Books
!声明Books数组
type(Books), dimension(2) :: list
!访问结构的组件
list(1)%title = "C Programming"
list(1)%author = "Nuha Ali"
list(1)%subject = "C Programming Tutorial"
list(1)%book_id = 6495407
list(2)%title = "Telecom Billing"
list(2)%author = "Zara Ali"
list(2)%subject = "Telecom Billing Tutorial"
list(2)%book_id = 6495700
!显示信息
Print *, list(1)%title
Print *, list(1)%author
Print *, list(1)%subject
Print *, list(1)%book_id
Print *, list(1)%title
Print *, list(2)%author
Print *, list(2)%subject
Print *, list(2)%book_id
end program deriveDataType
当上面的代码被编译并执行时,会产生以下结果 −
C Programming Nuha Ali C Programming Tutorial 6495407 C Programming Zara Ali Telecom Billing Tutorial 6495700

