oso*_*maz 1 fortran fortran77 fortran-common-block
我的子程序中有以下代码:
character x*256 ,y*80
common /foo/ x ,y(999)
Run Code Online (Sandbox Code Playgroud)
好吧,我实际上并没有写这个.所以我不明白这里的尺寸.是y一个999元素宽的80字符长字符串数组?
如果是这样,如何在没有公共块的情况下在Fortran 90中正确定义?
我首先要说的是你拥有的代码是"正确的"Fortran 90,但我同意你想要摆脱常见的阻塞.
基本上,没有任何具体的声明的性质.每当
<type> A
common /foo/ A(<size>)
Run Code Online (Sandbox Code Playgroud)
使用A的声明有两个部分,以及常见的关联:类型和维度.忽略关联,common允许在语句中声明维度,以上就是这样
<type> A
dimension A(<size>)
Run Code Online (Sandbox Code Playgroud)
这反过来也是如此
<type>, dimension(<size>) :: A
Run Code Online (Sandbox Code Playgroud)
来到具体示例,类型是长度为80的字符.您的非常见声明就是
character(len=80), dimension(999) :: y
Run Code Online (Sandbox Code Playgroud)
实际上,这y是一个长度为80个字符的999大小的排名1阵列. y(10)是一个标量长度为80的字符(数组的第10个元素y).
x(10)语法不正确,因为(10)是数组索引,并且x是标量.对于子字符串,需要不同的索引. x(10:10)是字符变量的第10个字符x; y(10)(10:10)是字符数组的第10个元素的第10个字符y.
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |