HL2004的个人博客分享 http://blog.sciencenet.cn/u/HL2004

博文

fortran中有关指针的用法总结

已有 30574 次阅读 2011-6-2 16:58 |系统分类:科研笔记| Fortran, 指针用法

   原来在C和C++ 中指针这一章让我痛苦死,后来发现在实际中如此有用,现在又在学Fortran,发现这两门语言的指针还是有很多不同的地方,为了便于自己学习和理解,特将有关fortran指针的用法写下来,以便随时查阅。它最简单的应用可以用来保存变量,或者是动态使用内存,或者是用于数据结构.
1、标准fortran指针并不代表变了在内存中的地址,而是代表这个变量的别名,相当与C中的引用。通过指针,同一个变量存储单元可以通过多个变量名来访问。当指针被声明后,程序并不会立即给它分配存储空间,而是要等到通过allocate语句进行动态内存分配或者通过指针赋值语句于一个目标变量联合起来后才会分配。目标变量都必须在程序的声明阶段被赋予target属性。
2、C++里面指针是一个独立的变量,它的作用就是为了保持它所指向的变量在内存中的地址,而fortran的指针则是共享了与它联合的变量的存储空间。当指针执行重新设置时,应考虑对原来分配的内存进行必要的处理,处理的方法就是将其交给其他的指针的管理,或者通过deallocated释放掉,否则会在计算机中形成一块已经被配置却无法进行操作的被丢弃内存,即所谓的指针悬挂问题。指针的状态可以通过ASSOCIATED(pointer,target)来检查指针释放设置了指向,返回值为逻辑型变量。还可通过NULLIFY来解除指针当前的联合状态,并使其指向不能使用的内存地址。
3、指针数组,它用来指向数组、数组片段或者数组元素或者用来连续分配内存空间。声明指针数组时冰箱将数组声明称延迟数组形式,但指针P指向数组中的第一个元素时,必须写成如下形式,p=>N(1:1),而不允许写成p=>n(1)。指针数组与目标数组建立联合时,必须具有相同的秩。以为指针数组也可以指向二维或多位目标数组中的某一位或某一维的某一片段,但是多位指针数组不允许指向比自己维数低的目标数组。
4、在写module的时候,如果输出为指针,并且此指针指向为一个在子程序的一个值,需要把这个值的定义放在module下面,不能放在子程序下面,最好加上private属性即可,如果不这样,主程序就不能读取这个指针值。
5、指针也可以作为参数传递近过程中(包括函数子程序和子例行程序),并可以作为函数的结果返回主调程序,但是需要注意,当使用指针作为参数传递进过程时,在主调过程中必须对被调函数进行显式得得接口说明,指针参数在声明时不需要使用intent属性进行说明,如果函数的返回值是指针,也需对该函数进行显式的接口说明。
6、指针数组与可分配数组非常相似,但是可分配数组仅存在于声明它的过程中,过程执行完毕后由系统自动收回它所占的存储空间,而指针数组必须通过deallocate语句来释放存储空间。
 


https://blog.sciencenet.cn/blog-579160-450937.html

上一篇:fortran源代码的网站,珍藏加分享
下一篇:fortran 文件操作知识要点摘要
收藏 IP: 202.114.120.*| 热度|

2 何海 何亮

发表评论 评论 (2 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-22 15:27

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部