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

Fortran 可分配数组

班玉堂
2023-03-14
本文向大家介绍Fortran 可分配数组,包括了Fortran 可分配数组的使用技巧和注意事项,需要的朋友参考一下

示例

数组可以具有可分配的属性:

! One dimensional allocatable array
integer, dimension(:), allocatable :: foo
! Two dimensional allocatable array
real, dimension(:,:), allocatable :: bar

这将声明变量,但不会为其分配任何空间。

! We can specify the bounds as usual
allocate(foo(3:5))

! It is an error to allocate an array twice
! so check it has not been allocated first
if (.not. allocated(foo)) then
  allocate(bar(10, 2))
end if

一旦不再需要一个变量,就可以释放它:

deallocate(foo)

如果由于某种原因allocate语句失败,程序将停止。如果通过stat关键字检查状态,可以防止这种情况:

real, dimension(:), allocatable :: geese
integer :: status

allocate(geese(17), stat=status)
if (stat /= 0) then
  print*, "Something went wrong trying to allocate 'geese'"
  stop 1
end if

该deallocate语句也具有stat关键字:

deallocate (geese, stat=status)

status 是一个整数变量,如果分配或取消分配成功,则值为0。

 类似资料:
  • 本文向大家介绍Fortran 分配格式说明符,包括了Fortran 分配格式说明符的使用技巧和注意事项,需要的朋友参考一下 示例 在Fortran 95之前,可以将分配的格式用于输入或输出。考虑 该assign语句将语句标签分配给整数变量。以后将此整数变量用作print语句中的格式说明符。 在Fortran 95中删除了这种格式说明符分配。相反,更现代的代码可以使用其他形式的执行流控制 或字符变量

  • 本文向大家介绍Fortran 文字常数,包括了Fortran 文字常数的使用技巧和注意事项,需要的朋友参考一下 示例 程序单元通常使用文字常量。这些涵盖了明显的情况,例如 除一种情况外,每个文字常量都是一个标量,具有类型,类型参数和语法给出的值。 整数文字常量的形式为 实数常量的形式为 复数文字常量的形式为 如果实部和虚部都是整数,则复数文字常量为默认复数,并且整数分量将转换为默认实数。如果一个成

  • 本文向大家介绍Fortran 函数语法,包括了Fortran 函数语法的使用技巧和注意事项,需要的朋友参考一下 示例 可以使用几种类型的语法编写函数 函数通过函数结果返回值。除非函数语句具有result子句,否则函数的结果与函数的名称相同。随着result功能的结果是,由给定result。在上面的前两个示例中,每个函数的结果由给出name;在第三条中res。 函数结果必须在函数执行期间定义。 函数

  • 本文向大家介绍Fortran 不区分大小写,包括了Fortran 不区分大小写的使用技巧和注意事项,需要的朋友参考一下 示例 在Fortran字符集中,字母的大写和小写字母是等效的。换句话说,Fortran不区分大小写。此行为与区分大小写的语言(例如C ++和许多其他语言)形成对比。 结果,变量a和A是相同的变量。原则上可以编写如下程序 对于优秀的程序员来说,要避免这种丑陋的选择。

  • 本文向大家介绍Fortran 浮点数精度,包括了Fortran 浮点数精度的使用技巧和注意事项,需要的朋友参考一下 示例 类型的浮点数real不能有任何实数值。它们可以表示实数,最多可以包含一定数量的十进制数字。 FORTRAN 77保证了两种浮点类型,而最新的标准则至少保证了两种实数类型。实变量可以声明为 x这是默认类型的实数,并且y是比更大的十进制精度的实数x。在Fortran 2008中,十

  • 本文向大家介绍Fortran 派生数据类型,包括了Fortran 派生数据类型的使用技巧和注意事项,需要的朋友参考一下 示例 定义一个新类型mytype: 声明一个mytype类型的变量: 派生类型的组件可以使用%运算符1进行访问: Fortran 2003功能(尚未由所有编译器实现)允许定义参数化数据类型: 派生类型matrix具有以下的类型名称(它们是列在括号中列出了三个类型参数rows,co