关于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. DateTools使用「日期工具库」
  2. java 中的gc方法
  3. 删除vs中最近的项目的方法
  4. ITK:KMeans聚类
  5. Python入门学习笔记11(静态方法、类方法与属性方法)
  6. RAC+单实例DATAGUARD 配置
  7. 【Net】测试网络、查看IP
  8. 题目:16版.雇员的工作职责(一)
  9. resttemplate post提交json_SEO工具脚本,Python百度普通收录API提交工具
  10. python ini文件 遍历_【自动化测试】Python 读取 .ini 格式文件
  11. django xadmin 默认密码_Django的认证系统
  12. Redhat linux AS4 环境下iSCSI协议配置
  13. Favorites整理v2011
  14. 什么是真正的程序员:A Little Printf Story
  15. x=n; y=1; while(x=(y−1)∗(y−1)) y++; 以上程序的时间复杂度为 ?
  16. 趣学算法 陈小玉 书中所有问题的实现代码
  17. 【评测】牛血清白蛋白(BSA)篇
  18. 《窈窕绅士》里的诗句
  19. OnTheHub 免费取得Offfice/Windows 正版序号,学生/教师限定
  20. 智能过滤系统 西门子200smart与昆仑通态触摸屏做的自动过滤系统

热门文章

  1. python函数代码,这个python函数代码如何工作?
  2. 修改linux软件下载,Linux软件下载以及修改环境变量
  3. Python:random库使用方法
  4. 关于Android中使用Enum的一点总结
  5. YFIOServer后台驱动算法优化
  6. BZOJ 4269: 再见Xor [高斯消元 线性基]
  7. 关于 MySQL 8.0 新特性“隐藏索引”的一点思考
  8. Microsoft Office Visio 2010如何创建UML 用例图
  9. 链式延迟执行DOME
  10. 事件和委托的编译代码