当前位置: 首页 > 编程笔记 >

Fortran 派生数据类型

秦博达
2023-03-14
本文向大家介绍Fortran 派生数据类型,包括了Fortran 派生数据类型的使用技巧和注意事项,需要的朋友参考一下

示例

定义一个新类型mytype:

type :: mytype
  integer :: int
  real    :: float
end type mytype

声明一个mytype类型的变量:

type(mytype) :: foo

派生类型的组件可以使用%运算符1进行访问:

foo%int = 4
foo%float = 3.142

Fortran 2003功能(尚未由所有编译器实现)允许定义参数化数据类型:

type, public :: matrix(rows, cols, k)
  integer, len :: rows, cols
  integer, kind :: k = kind(0.0)
  real(kind = k), dimension(rows, cols) :: values
end type matrix

派生类型matrix具有以下的类型名称(它们是列在括号中列出了三个类型参数rows,cols和k)。在每个类型参数的声明中,必须指出它们是kind(kind)还是length(len)类型参数。

像固有类型一样,类型类型参数必须是常量表达式,而像固有字符变量的长度一样,长度类型参数在执行过程中可能会有所不同。

请注意,参数k具有默认值,因此在matrix声明类型变量时可以提供或省略它,如下所示

type (matrix (55, 65, kind=double)) :: b, c ! default parameter provided
type (matrix (rows=40, cols=50)     :: m    ! default parameter omitted

派生类型的名称可能doubleprecision与任何内部类型都不相同。

  1. 许多人想知道为什么Fortran%用作组件访问运算符,而不是更常见的.。这是因为.已经采取的操作语法,即.not.,.and.,.my_own_operator.。

 类似资料:
  • 数据结构是指若干个数据的连接方式,一个复杂的数据往往是由若干个不同类型数据形成的结构。派生类型是指用户利用FORTRAN系统内部类型,如数值型、逻辑型、字符型等自行设计出一个新的数据类型,它们实际上是由内部类型数据形成的某种结构。本章主要目的是学会按复杂数据的客观结构形态,由程序员定义出一种派生类型,再结合上将在后面叙述的模块后,可将该类型必需的操作写成内部子程序,连同派生类型一起写在模块中,供程

  • 本文向大家介绍C ++中基本数据类型与派生数据类型之间的区别,包括了C ++中基本数据类型与派生数据类型之间的区别的使用技巧和注意事项,需要的朋友参考一下 在编程中,数据类型表示打算由用户使用的数据的类型和性质。它是编译器或解释器要处理的数据类型,并在主存储器中提供相应的存储位置。 现在根据数据的性质,数据类型主要有两种类型,一种是基本数据类型,另一种是派生数据类型。这两种数据类型都在编程中使用,

  • 本文向大家介绍Fortran 本征类型,包括了Fortran 本征类型的使用技巧和注意事项,需要的朋友参考一下 示例 以下是Fortran固有的数据类型: integer,real并且complex是数字类型。 character 是一种用于存储字符串的类型。 logical用于存储二进制值.true.或.false.。 所有数字和逻辑固有类型均使用种类进行参数化。 要不就 其中specific_

  • 我无法将派生类传递给接受基类作为参数的函数。基类由“障碍物”组成,这些障碍物将被放置在“板”上。无效的board::setvalue(int-length、int-width、board 但是,这会导致编译器给出“未知参数转换…”错误。在浏览站点时,我发现我应该将派生对象作为常量进行传递,但这会导致问题,因为无法将常量分配给线路板(因为它包含指向非常量障碍物的指针)。 反过来,将线路板更改为包含常

  • 每个类中的方法如下所示: }

  • 和构造函数类似,析构函数也不能被继承。与构造函数不同的是,在派生类的析构函数中不用显式地调用基类的析构函数,因为每个类只有一个析构函数,编译器知道如何选择,无需程序员干涉。 另外析构函数的执行顺序和构造函数的执行顺序也刚好相反: 创建派生类对象时,构造函数的执行顺序和继承顺序相同,即先执行基类构造函数,再执行派生类构造函数。 而销毁派生类对象时,析构函数的执行顺序和继承顺序相反,即先执行派生类析构