fortran中SHAPE是如何使用的?有什么作用

如何访问从函数返回的数组元素例如,shape()返回一个整数数组.如何将该数组的元素与整数进行比较?以下内容无法编译:

我知道这是因为shape(c)返回一个数组.但是,访问数组的元素似乎不可能如下:shape(c)(1)

现在,如果我添加这两行:

…并将if子句更改为:

……然后才行.但是我真的必须声明一个额外的数组变量来保存shape()的返回值,还是囿其他方法可以做到这一点

除了处理SHAPE和逻辑表达式等的答案之外,还有一个对你的问题“如何访问从函数返回的数组元素?”的问题的一般答案.是

>将具有函数引用的表达式赋给数组变量,然后索引该数组变量.
>使用具有函数引用的表达式作为获取虚拟数组参数的过程的实际参数,並为您进行索引.

因此,对你的上一个问题的一般答案“但我真的必须声明一个额外的数组变量来保存shape()的返回值,还是有其他方法可以做到这一點”是“是的,你需要声明另一个数组变量”,因此“不,没有别的办法”.

(注意,合理的优化编译器一旦有了数组函数的结果就会避免需要任何額外的内存操作/分配等,这实际上只是一个语法问题.)

语言设计这一特定方面的基本原理有时归因于需要避免语法歧义和对字符类型的数组函數结果的混淆(它们可能被索引和/或包含在内 – 你怎么知道它的目的是什么?) .其他人认为这样做只是为了惹恼C程序员.

我要回帖

 

随机推荐