这两种声明可变大小数组的方法有什么区别吗?
例如:
例如:
real, dimension(:) :: arr
和
real :: arr(*)
表单
real, dimension(:) :: arr
声明一个假设大小数组,而形式为real :: arr(*)
声明一个“假定大小”数组。High Performance Mark的答案解释了这两个语句之间的区别 - 简而言之:是的,它们有所不同;只有一个声明了一个假设大小的数组,并带来了一些影响。
然而,由于提到了dimension(:)
而不是dimension(*)
,我想补充一点内容。
real, dimension(:) :: arr1
real, dimension(*) :: arr2
等价于
real :: arr1(:)
real :: arr2(*)
甚至可以使用 dimension
语句。[我不想鼓励这样做,所以我不会举例说明。]
问题的重要区别在于使用 *
和 :
,而不是 dimension
。
也许有些混淆了假设大小和虚拟参数?在作为虚拟参数时,这种选择最为常见。
*
更好。更好的做法是,如果合适的话,将例程放在一个模块中,因为在使用模块时不需要接口。 - jvriesem