gpt4 book ai didi

arrays - 如何在 ASSOCIATE block 中保留 Fortran 数组边界?

转载 作者:行者123 更新时间:2023-12-03 20:32:08 24 4
gpt4 key购买 nike

我想将关联块中的数组边界保留为:

integer a(2:4,2)
associate (b => a(:,1))
print *, lbound(b), ubound(b)
end associate

我期望 b 的界限是 24 ,但实际上它们是 13 .这该怎么做?提前致谢!

最佳答案

您正在关联到一个子数组,它的边界总是从 1 开始。尝试

 print *, lbound(a(:,1),1)

AFAIK 你不能在 associate 中使用指针重映射技巧构造。具体:“ If the selector is an array, the associating entity is an array with a lower bound for each dimension equal to the value of the intrinsic LBOUND(selector).

但是你当然可以使用指针
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

关于arrays - 如何在 ASSOCIATE block 中保留 Fortran 数组边界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13576873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com