Java中子程序输出到输出文件中_Fortran 90中子例程和函数中的参数/变量的INTENT的含义...
关于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的含义...相关推荐
- java在linux生成pdf文件,从 Java 应用程序动态生成 PDF 文件
简介: 如果您的应用程序需要动态生成 PDF 文档,那么您需要 iText 库.开源的 iText 库使得 PDF 的创建变得轻松易行.本文介绍了 iText 并提供了一个使用它从 Java 技术应用 ...
- 习题 8.21 用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n个整数在主函数中输入,最后在主函数中输出。
C程序设计(第四版) 谭浩强 习题8.21 个人设计 习题 8.21 用指向指针的指针的方法对n个整数排序并输出.要求将排序单独写成一个函数.n个整数在主函数中输入,最后在主函数中输出. 代码块: 方 ...
- 习题 6.20 用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。整数和n在主函数中输入。最后在主函数中输出。
C++程序设计(第三版) 谭浩强 习题6.20 个人设计 习题 6.20 用指向指针的指针的方法对n个整数排序并输出.要求将排序单独写成一个函数.整数和n在主函数中输入.最后在主函数中输出. 代码块: ...
- Pytorch中tensor维度和torch.max()函数中dim参数的理解
Pytorch中tensor维度和torch.max()函数中dim参数的理解 维度 参考了 https://blog.csdn.net/qq_41375609/article/details/106 ...
- java中可以改变引用的指向吗_java中引用传递问题,在函数中修改引用的指向,会不会影响实参?...
拉丁的传说 是时候展现一下我的JAVA基础知识了,2333.我按照执行顺序给你写注释好了.Personp1=newPerson(10);//创建了一个对象//p1.age=10;modify(p1); ...
- java改变实参_java中引用传递问题,在函数中修改引用的指向,会不会影响实参?...
是时候展现一下我的JAVA基础知识了,2333. 我按照执行顺序给你写注释好了. Person p1 = new Person(10); //创建了一个对象 //p1.age=10; modify(p ...
- python中的星号和乘号_Python 函数中参数前面一个和两个星号(**)的区别
Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化 脚本( shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. 在 P ...
- 凡是函数中未指定存储类型_凡是函数中未指定存储类型的局部变量,其隐含的存储类别为 。...
凡是函数中未指定存储类型的局部变量,其隐含的存储类别为 . 答:自动(auto) 婴儿1.5岁-2岁时,使用的句子主要是( ). 答:电报句 监控批量成本预测需要() 答:选择预测所需的成本研究 现行 ...
- C++中常对象、常成员函数、常成员变量
用const修饰的类对象叫做常对象, 用const修饰的成员函数叫常成员函数, 用const修饰的成员变量叫常成员变量, 常对象: 型如: const <类名> <对象 ...
最新文章
- [转]Android蓝牙开发浅谈
- 【Webview相关问题】登陆失败之cookie陷阱
- python3 安装包 源码包 下载慢问题 解决方法
- 机器学习算法加强——XGBoost实践
- just函数python_提升 Python 性能 Numba 与 Cython
- Linux基金会:Linux已经战胜微软
- Web开发-Django模型层
- 【Python】Python实战从入门到精通之五 -- 教你使用文件写入
- eventfd-aio-test.c
- 老公想入手一块10万左右的手表有哪些推荐?
- plpgsql语句的兼容性
- scala 隐式参数入门及应用
- 4月第2周安全回顾 微软发布4月补丁 新僵尸网络出现
- Oracle JDK 最新和旧版本下载地址
- Excel创建多个并列柱状图,并加次级坐标轴
- 两台电脑之间使用ntp做时间同步的总结
- iphone健康数据统计_如何控制哪些应用程序可以访问iPhone的健康数据
- sklearn库:分类、回归、聚类、降维、模型优化、文本预处理实现用例(赶紧收藏)
- 【机器学习】采用信息增益、信息增益率、基尼指数来建造决策树。
- PS人物头发抠取教程 PS照片换背景方法