我想将关联块中的数组边界保留为:
integer a(2:4,2)
associate (b => a(:,1))
print *, lbound(b), ubound(b)
end associate
Run Code Online (Sandbox Code Playgroud)
我期望bis 2and的边界4,但实际上它们是1and 3。这该怎么做?提前致谢!
您正在关联到一个子数组,其边界始终从 1 开始。尝试
print *, lbound(a(:,1),1)
Run Code Online (Sandbox Code Playgroud)
AFAIK 你不能在associate构造中使用指针重新映射技巧。具体来说:“如果选择器是一个数组,则关联实体是一个数组,其每个维度的下限等于内在 LBOUND(选择器) 的值。 ”
但你当然可以使用指针
integer,target :: a(2:4,2)
integer,pointer :: c(:)
associate (b => a(:,1))
print *, lbound(b), ubound(b)
end associate
c(2:4) => a(:,1)
print *, lbound(c), ubound(c)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
461 次 |
| 最近记录: |