内容发布更新时间 : 2025/7/18 15:41:59星期一 下面是文章的全部内容请认真阅读。
《Fortran95 程序设计》学习笔记 by 柳柳
一行一行,iostat那个/=0就over了。(Ruby : readline)
? 直接访问文件的操作(还是分行的操作):open的时候设置recl的大小,然后类似:
? read(id , fmt , rec = 编号, ..)XX读编号内容即可。注意:recl=6则1行为4个
字符内容(有两个是”\\n”)
? 二进制文件的操作,与上面相比,改用form = “unformatted”
★ 【重要功能】内部文件与字符串,数字转换:把unit改为 = 字符串,读入数字即可做
到数字转字符串;反之亦可。
★ 【语法】namelist:namelist /na/ a,b,c 输入输出如下 (没用的功能)
? &na ? A=1 ? B=2 ? /
指针(指向变量、数组、函数)
★ 【语法与范例】指针指到变量
? integer, target :: a=1 ?声明一个可以当成目标的变量 ? integer, pointer :: p=1 ?声明一个可以指向整数的指针
? p => a ?设置指向(也可以不指,allocate(p)即可开地址,deallocate(p)干掉
地址。用起来像是个可释放的变量) ? p = 3 ?设置P位置的内存数据
★ 【语法】设置空指针:p => null() 或
? integer , pointer :: p ? nullify(p)
★ 【语法】判断指针是否已经设置内容:associated(pointer,[target]) 。这里如果有target可
以判断指针是否指向target内容。 ★ 【语法与例子】指针数组
? integer , pointer :: a( : ) 声明一维指针数组 ? integer , target :: b(5) = (/1,2,3,4,5/) ? a => b 即 a(1-5) = b(1-5)
第 11 页 共 16 页
《Fortran95 程序设计》学习笔记 by 柳柳
? a => b(1:5:2) 即a(1,2,3) = b(1,3,5)
? 同理,allocate(a(5)); a=(/1,2,3,4,5/) 注意这种和allocate的数组不同,必须手动
释放子程序霸占的内存。 ? 同理2,integer,pointer :: a( : , : )
★ 【语法】指针函数 :
? interface ?注:如果用了module就不用interface了 ? function getmin(p)
? integer, pointer :: p( : ) 输入一个指针 ? integer, pointer :: getmin 返回一个指针 ? end function ? end interface
★ 【数据结构】队列与堆寨(试误法)。举例:队列
? 定义类型
? type :: datalink ? integer :: I
? type(datalink) , pointer :: prev,next ?两个指针,可以指向datalink的type对象 ? end type datalink ? 使用
? type(datalink),target::node1,node2 ?声明两个新的类型,需要声明可做target ? node1 = datalink(1,null(),node2) ?初始化node1这个type对象,这个地方很有
特色,记住。
Visua