gpt4 book ai didi

arrays - Fortran 中字符串数组的动态分配不会调整大小

转载 作者:行者123 更新时间:2023-12-03 16:14:35 26 4
gpt4 key购买 nike

考虑以下 Fortran 程序:

program test
character(len=:), allocatable :: str
allocate(character(3) :: str)
print *, len(str)
str = '12345'
print *, len(str)
end program

当我运行它时,我得到了预期的结果:
   3
5

也就是说,当 str 设置为 '12345' 时,字符串的大小从 3 调整为 5。相反,如果我使用动态字符串数组,则情况并非如此。例子:
program test
character(len=:), allocatable :: str(:)
allocate(character(3) :: str(2))
print *, len(str(1)), len(str(2))
str(1) = '12345'
print *, len(str(1)), len(str(2))
end program

当我运行这个时,我得到:
   3           3
3 3

所以 str(1) 的集合没有改变字符串的长度。我在 ifort 16.0.2 和 gfortran 5.3.1 上得到相同的行为。我的问题是这种行为与最新的 Fortran 标准一致还是编译器中的错误?

最佳答案

这是正确的行为。可分配数组的元素本身不是可分配变量,不能在赋值时(或以任何其他方式)重新分配。此外,所有数组元素必须具有相同的类型 - 包括字符串长度。

关于arrays - Fortran 中字符串数组的动态分配不会调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50255936/

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