gpt4 book ai didi

arrays - 假设大小的数组 : Colon vs. 星号 - DIMENSION( :) arr vs. arr(*)

转载 作者:行者123 更新时间:2023-12-03 11:45:39 25 4
gpt4 key购买 nike

这两种声明假定大小数组的方法有什么区别吗?

例如

real, dimension(:) :: arr


real               :: arr(*)

最佳答案

表格

real, dimension(:) :: arr

声明一个假定形状的数组,而形式
real :: arr(*)

声明一个假定大小的数组。

而且,是的,它们的使用之间存在差异。之所以出现差异,是因为编译器大约“知道”假定形状数组的形状,但不知道假定大小数组的形状。编译器可用的额外信息意味着,除其他外,假定形状数组可用于全数组表达式。假定大小的数组仅当它是不需要数组形状的过程引用中的实际参数时才能在整个数组表达式中使用。哦,还有对内在的调用 lbound -- 但不是在调用内在函数 ubound .仔细阅读标准或一本好的 Fortran 书籍会发现其他微妙的、不那么微妙的差异。

对于新的 Fortran 程序员的一些建议是尽可能使用假定形状的数组。它们在 Fortran 90 之前不可用,因此您会在旧代码中看到许多假定大小的数组。假设形状数组在新代码中更好,因为 shapesize函数可用于查询它们的大小以避免越界错误和 allocate维度取决于输入数组维度的数组。

关于arrays - 假设大小的数组 : Colon vs. 星号 - DIMENSION( :) arr vs. arr(*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24543329/

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