fortran中对于可变数组的用法,在彭国伦的书中没有详细的介绍,只是介绍了相关的四个函数:
allocate() —— 对数组大小进行初始化;
allocated() —— 检测数组是否被分配内存;
以及deallocate() —— 释放数组的内存;
另外,在对可变数组的应用上,彭还提出了另外一种比较讨巧的办法,那就是事先声明一个较大的数组。
例如,事先声明一个数组ARRY(10000),那么在以后的使用过程中,对于任意元素个数不大于10000的一维数组,都可以“借用”ARRY的一部分来使用。
那么针对于这两种动态数组的使用方法究竟有什么优缺点呢?
在第一种方法中,数组使用前需要首先分配内存,否则是无法使用的
例如声明一个一维数组:
Integer,allocatable::ARRY()
那么在使用之前,首先要分配内存:
allocate(ARRY(100))
然后才可以使用这个ARRY(100).
如果需要使用一个具有101个元素的数组,那么首先要将其分配的内存释放掉:
deallocate(ARRY)
然后再次为其分配新的内存
allocate(ARRY(101))
从上述过程看来,新的数组ARRY(101)和旧的数组ARRY(100)不具有关系。也就是说,在新的数组中是不能保