关于Fortran子程序中的变量 INTENT ,我有几个问题 . 例如,几周前,我发布了一个关于不同Fortran主题的问题(In Fortran 90, what is a good way to write an array to a text file, row-wise?),其中一个回复包括定义 tick 和 tock 命令的代码 . 我发现这些对我的代码运行有用 . 我在下面粘贴了 tick 和 tock 并在一个简单的例子中使用它们来计算 DO 循环:

MODULE myintenttestsubs

IMPLICIT NONE

CONTAINS

SUBROUTINE tick(t)

INTEGER, INTENT(OUT) :: t

CALL system_clock(t)

END SUBROUTINE tick

! returns time in seconds from now to time described by t

REAL FUNCTION tock(t)

INTEGER, INTENT(IN) :: t

INTEGER :: now, clock_rate

CALL system_clock(now,clock_rate)

tock = real(now - t)/real(clock_rate)

END FUNCTION tock

END MODULE myintenttestsubs

PROGRAM myintenttest

USE myintenttestsubs

IMPLICIT NONE

INTEGER :: myclock, i, j

REAL :: mytime

CALL tick(myclock)

! Print alphabet 100 times

DO i=1,100

DO j=97,122

WRITE(*,"(A)",ADVANCE="NO") ACHAR(j)

END DO

END DO

mytime=tock(myclock)

PRINT *, "Finished in ", mytime, " sec"

END PROGRAM myintenttest

这导致了我关于 INTENT 的第一个问题(我的第二个问题,下面是关于未明确指定INTENT的子例程或函数参数/变量):

要启动计时器,我写 CALL tick(myclock) ,其中 myclock 是一个整数 . 子程序的 Headers 是 SUBROUTINE tick(t) ,因此它接受虚拟整数 t 作为参数 . 但是,在子程序内, t 被赋予INTENT(OUT): INTEGER, INTENT(OUT) :: t . 怎么会这样?我天真的假设是INTENT(OUT)意味着可以修改这个变量的值并将其输出到子程序之外 - 而不是读入 . 但显然 t 被读入子程序;我将整数 myclock 传递给子程序 . 所以,由于 t 被声明为INTENT(OUT), t 似乎也会出现?

我注意到在函数 tock(t) 中,整数变量 now 和 clock_rate 没有明确给出INTENT . 那么,这些变量的范围是什么?只有 now 和 clock_rate 才能在函数中看到吗? (类似于INTENT(NONE)或INTENT(LOCAL),虽然没有这样的语法?)而且,虽然这是一个函数,但子例程是否也适用?有时,当我编写子程序时,我想声明"temporary"这样的变量 - 仅在子程序中看到的变量(例如,在最终输出的赋值之前的步骤中修改输入) . 这是缺少指定的INTENT完成的吗?

我查看了一个文本(Fortran 90 text by Hahn),在其中,他给出了以下对参数意图的简要描述:

参数意图 . 可以使用intent属性指定虚拟参数,即,是否要将它们用作输入或输出,或者两者都用作

SUBROUTINE PLUNK(X, Y, Z)

REAL, INTENT(IN) :: X

REAL, INTENT(OUT) :: Y

REAL, INTENT(INOUT) :: Z

...

如果intent为IN,则伪参数的子值可能不会在子程序中更改 . 如果意图是OUT,则相应的实际参数必须是变量 . 诸如CALL PLUNK(A,(B),C)之类的调用会产生编译器错误 - (B)是表达式,而不是变量 . 如果意图是INOUT,则相应的实际参数必须再次是变量 . 如果伪参数没有意图,则实际参数可以是变量或表达式 . 建议给出所有伪参数的意图 . 特别是,所有函数参数都应具有意图IN . 意图也可以在单独的声明中指定,例如意图(INOUT)X,Y,Z .

上面的文字似乎甚至没有提到论证/变量范围;似乎主要是讨论在子例程或函数内是否可以更改参数/变量值 . 这是真的,如果是这样,我对于INTENT的范围有什么假设?

Java中子程序输出到输出文件中_Fortran 90中子例程和函数中的参数/变量的INTENT的含义...相关推荐

  1. java在linux生成pdf文件,从 Java 应用程序动态生成 PDF 文件

    简介: 如果您的应用程序需要动态生成 PDF 文档,那么您需要 iText 库.开源的 iText 库使得 PDF 的创建变得轻松易行.本文介绍了 iText 并提供了一个使用它从 Java 技术应用 ...

  2. 习题 8.21 用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n个整数在主函数中输入,最后在主函数中输出。

    C程序设计(第四版) 谭浩强 习题8.21 个人设计 习题 8.21 用指向指针的指针的方法对n个整数排序并输出.要求将排序单独写成一个函数.n个整数在主函数中输入,最后在主函数中输出. 代码块: 方 ...

  3. 习题 6.20 用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。整数和n在主函数中输入。最后在主函数中输出。

    C++程序设计(第三版) 谭浩强 习题6.20 个人设计 习题 6.20 用指向指针的指针的方法对n个整数排序并输出.要求将排序单独写成一个函数.整数和n在主函数中输入.最后在主函数中输出. 代码块: ...

  4. Pytorch中tensor维度和torch.max()函数中dim参数的理解

    Pytorch中tensor维度和torch.max()函数中dim参数的理解 维度 参考了 https://blog.csdn.net/qq_41375609/article/details/106 ...

  5. java中可以改变引用的指向吗_java中引用传递问题,在函数中修改引用的指向,会不会影响实参?...

    拉丁的传说 是时候展现一下我的JAVA基础知识了,2333.我按照执行顺序给你写注释好了.Personp1=newPerson(10);//创建了一个对象//p1.age=10;modify(p1); ...

  6. java改变实参_java中引用传递问题,在函数中修改引用的指向,会不会影响实参?...

    是时候展现一下我的JAVA基础知识了,2333. 我按照执行顺序给你写注释好了. Person p1 = new Person(10); //创建了一个对象 //p1.age=10; modify(p ...

  7. python中的星号和乘号_Python 函数中参数前面一个和两个星号(**)的区别

    Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化 脚本( shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. 在 P ...

  8. 凡是函数中未指定存储类型_凡是函数中未指定存储类型的局部变量,其隐含的存储类别为    。...

    凡是函数中未指定存储类型的局部变量,其隐含的存储类别为 . 答:自动(auto) 婴儿1.5岁-2岁时,使用的句子主要是( ). 答:电报句 监控批量成本预测需要() 答:选择预测所需的成本研究 现行 ...

  9. C++中常对象、常成员函数、常成员变量

    用const修饰的类对象叫做常对象, 用const修饰的成员函数叫常成员函数, 用const修饰的成员变量叫常成员变量, 常对象: 型如:      const  <类名>  <对象 ...

最新文章

  1. [转]Android蓝牙开发浅谈
  2. 【Webview相关问题】登陆失败之cookie陷阱
  3. python3 安装包 源码包 下载慢问题 解决方法
  4. 机器学习算法加强——XGBoost实践
  5. just函数python_提升 Python 性能 Numba 与 Cython
  6. Linux基金会:Linux已经战胜微软
  7. Web开发-Django模型层
  8. 【Python】Python实战从入门到精通之五 -- 教你使用文件写入
  9. eventfd-aio-test.c
  10. 老公想入手一块10万左右的手表有哪些推荐?
  11. plpgsql语句的兼容性
  12. scala 隐式参数入门及应用
  13. 4月第2周安全回顾 微软发布4月补丁 新僵尸网络出现
  14. Oracle JDK 最新和旧版本下载地址
  15. Excel创建多个并列柱状图,并加次级坐标轴
  16. 两台电脑之间使用ntp做时间同步的总结
  17. iphone健康数据统计_如何控制哪些应用程序可以访问iPhone的健康数据
  18. sklearn库:分类、回归、聚类、降维、模型优化、文本预处理实现用例(赶紧收藏)
  19. 【机器学习】采用信息增益、信息增益率、基尼指数来建造决策树。
  20. PS人物头发抠取教程 PS照片换背景方法

热门文章

  1. 针织布横条疵点解决方案
  2. ssm如何支持热部署_最新Spring Boot实战文档推荐:项目搭建+配置+SSM整合
  3. 怎么自动响应richTextBox超级链接单击click事件
  4. Linux查看服务器总内存和总硬盘大小
  5. 物联网云计算成本核算 小厂的出路在哪里
  6. [codeVS1204] 寻找子串位置
  7. 马来西亚 IT 决策者正转向开源来最大化 IT 功能
  8. 在线电子商务网站 分页 的封装
  9. spyder中以html输出图形,交互(?)用matplotlib在Spyder中绘图
  10. mysql 升序_MySQL之排序检索数据