指针与动态数据结构_第1页
指针与动态数据结构_第2页
指针与动态数据结构_第3页
指针与动态数据结构_第4页
指针与动态数据结构_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、03/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心 第十一章第十一章 指针与动态数据结构指针与动态数据结构FORTRAN90FORTRAN90程序设计程序设计课多媒体课件课多媒体课件03/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.1 11.1 概述概述/ /概述概述l静态数据结构静态数据结构: :在编译时为其分配存储空间在编译时为其分配存储空间, ,大小不能改变。大小不能改变。l静态数据结构优点静态数据结构优点: :分配算法简单分配算法简单, ,易于实现易于实现, ,使用方便。使用方便。l静态数据结构缺点静态数据结构缺点: :易浪费存储空间易浪费存储空间

2、, ,易产生下标越界错误。易产生下标越界错误。l动态数据结构动态数据结构: :在运行时为其分配存储空间在运行时为其分配存储空间, ,大小可改变。大小可改变。l动态数据结构优点动态数据结构优点: :可节约存储空间,灵活,应用广。可节约存储空间,灵活,应用广。l动态数据结构缺点动态数据结构缺点: :分配算法复杂分配算法复杂, ,实现难度大。实现难度大。 象象链表链表、树结构树结构、图结构图结构等数据结构都适合用动态数据等数据结构都适合用动态数据结构实现,指针是实现动态数据结构的有效手段。结构实现,指针是实现动态数据结构的有效手段。 指针和动态数据结构广泛应用于软件设计,熟练掌握和指针和动态数据结构

3、广泛应用于软件设计,熟练掌握和灵活应用指针和动态数据结构求解问题,可使程序更加简洁、灵活应用指针和动态数据结构求解问题,可使程序更加简洁、紧凑、高效。紧凑、高效。11.1 概述第十一章第十一章 指针与动态数据结构指针与动态数据结构概述概述存储结构存储结构访问方式访问方式指针声明指针声明指针状态指针状态03/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.1 11.1 概述概述/ /存储结构存储结构l存储单元地址存储单元地址: :存储单元在内存中的排列序号(编号)。存储单元在内存中的排列序号(编号)。l存储分配存储分配: :系统为变量、数组、结构体、指针分配连续存储系统为变量、

4、数组、结构体、指针分配连续存储单元,用于存储有关数据,其变量名、数组名、结构体名、单元,用于存储有关数据,其变量名、数组名、结构体名、指针名代表连续存储单元首地址。指针名代表连续存储单元首地址。l指针变量(指针)指针变量(指针): :为其分配的存储单元用于保存其它变量、为其分配的存储单元用于保存其它变量、数组、结构体的地址。通过改变其所存储的地址内容实现数组、结构体的地址。通过改变其所存储的地址内容实现动态数据结构。动态数据结构。l示例:示例: INTEGER,TARGET : I=1255INTEGER,TARGET : I=1255 REAL : R=534.45 REAL : R=534

5、.45 CHARACTER CHARACTER* *5 :S=CHINA5 :S=CHINA INTEGER : A(3)=(/35,45,55/) INTEGER : A(3)=(/35,45,55/) INTEGER,POINTER : P INTEGER,POINTER : P P=I P=I11.1 概述第十一章第十一章 指针与动态数据结构指针与动态数据结构概述概述存储结构存储结构访问方式访问方式指针声明指针声明指针状态指针状态03/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.1 11.1 概述概述/ /访问方式访问方式11.1 概述第十一章第十一章 指针与动态数

6、据结构指针与动态数据结构l直接访问直接访问: :直接访问存储单元中的内容。如对普通变量、数直接访问存储单元中的内容。如对普通变量、数组元素、结构体成员的访问,采用直接访问方式。如图组元素、结构体成员的访问,采用直接访问方式。如图11-11-2 2所示。所示。l间接访问间接访问: :先从存储单元中得到被访问存储单元地址,然后先从存储单元中得到被访问存储单元地址,然后通过该地址访问被访问存储单元中的内容。如对指针变量通过该地址访问被访问存储单元中的内容。如对指针变量的访问,采用间接访问方式。如图的访问,采用间接访问方式。如图11-311-3所示。所示。l指针变量存储单元中保存目标变量地址,通常用箭

7、头表示。指针变量存储单元中保存目标变量地址,通常用箭头表示。F90F90指针保存目标变量名称,将指针看成目标变量的别名。指针保存目标变量名称,将指针看成目标变量的别名。l指针变量声明后指针变量声明后, ,未分配存储空间未分配存储空间, ,访问前需分配存储空间。访问前需分配存储空间。 ( (示例示例) )I I125125125125J J3753753 3* *125125I=125I=125J=3J=3* *I IP PI I125125125125J J3753753 3* *1251253 3* *P PI I地址地址I=125I=125P=IP=IJ=3J=3* *I I概述概述存储结

8、构存储结构访问方式访问方式指针声明指针声明指针状态指针状态03/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.1 11.1 概述概述/ /指针声明指针声明11.1 概述第十一章第十一章 指针与动态数据结构指针与动态数据结构lPOINTERPOINTER属性属性: :通过通过POINTERPOINTER属性声明指针变量。属性声明指针变量。lTARGETTARGET属性属性: :通过通过TARGETTARGET属性声明指针可指的目标变量。属性声明指针可指的目标变量。l一般格式:一般格式: ,POINTER:,POINTER:, 或或 POINTER POINTER , 例:例:

9、 REAL Q1,Q2REAL Q1,Q2 INTEGER,POINTER:P1,P2 INTEGER,POINTER:P1,P2! !声明指向整型变量的指针声明指向整型变量的指针P1P1和和P2P2 POINTER Q1 POINTER Q1 ! !声明指向实型变量的指针声明指向实型变量的指针Q1Q1 POINTER IQ1,IQ2 POINTER IQ1,IQ2! !声明指向整型变量的指针声明指向整型变量的指针IQ1IQ1和和IQ2IQ2 概述概述存储结构存储结构访问方式访问方式指针声明指针声明指针状态指针状态03/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.1 11

10、.1 概述概述/ /指针状态指针状态11.1 概述第十一章第十一章 指针与动态数据结构指针与动态数据结构l指针有三种状态指针有三种状态: :未定义、空指针、被关联。未定义、空指针、被关联。u未定义:程序在初始状态中未定义所有指针。未定义:程序在初始状态中未定义所有指针。u空指针:指针已定义,但未成为目标变量别名。空指针:指针已定义,但未成为目标变量别名。u被关联:指针已定义,已成为目标变量别名。被关联:指针已定义,已成为目标变量别名。概述概述存储结构存储结构访问方式访问方式指针声明指针声明指针状态指针状态03/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.1 11.1 概述

11、概述/ /概述概述/ /动态数据结构示例动态数据结构示例l静态数据结构静态数据结构: :在编译时为其分配存储空间在编译时为其分配存储空间, ,大小不能改变。大小不能改变。l静态数据结构优点静态数据结构优点: :分配算法简单分配算法简单, ,易于实现易于实现, ,使用方便。使用方便。l静态数据结构缺点静态数据结构缺点: :易浪费存储空间易浪费存储空间, ,易产生下标越界错误。易产生下标越界错误。l动态数据结构动态数据结构: :在运行时为其分配存储空间在运行时为其分配存储空间, ,大小可改变。大小可改变。l动态数据结构优点动态数据结构优点: :可节约存储空间,灵活,应用广。可节约存储空间,灵活,应

12、用广。l动态数据结构缺点动态数据结构缺点: :分配算法复杂分配算法复杂, ,实现难度大。实现难度大。 象象链表、树结构、图结构链表、树结构、图结构等数据结构都适合用动态数据等数据结构都适合用动态数据结构实现,指针是实现动态数据结构的有效手段。结构实现,指针是实现动态数据结构的有效手段。 指针和动态数据结构广泛应用于软件设计,熟练掌握和指针和动态数据结构广泛应用于软件设计,熟练掌握和灵活应用指针和动态数据结构求解问题,可使程序更加简洁、灵活应用指针和动态数据结构求解问题,可使程序更加简洁、紧凑、高效。紧凑、高效。11.1 概述第二章第二章 FORTRAN90FORTRAN90开发环境开发环境a

13、a1 1a a2 2a an n 链表链表树结构树结构图结构图结构概述概述存储结构存储结构访问方式访问方式指针声明指针声明指针状态指针状态03/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.1 11.1 概述概述/ /存储结构存储结构/ /示例示例l存储单元地址存储单元地址: :存储单元在内存中的排列序号(编号)。存储单元在内存中的排列序号(编号)。l存储分配存储分配: :系统为变量、数组、结构体、指针分配连续存储系统为变量、数组、结构体、指针分配连续存储单元,用于存储有关数据,其变量名、数组名、结构体名、单元,用于存储有关数据,其变量名、数组名、结构体名、指针名代表连续存

14、储单元首地址。指针名代表连续存储单元首地址。l指针变量(指针)指针变量(指针): :为其分配的存储单元用于保存其它变量、为其分配的存储单元用于保存其它变量、数组、结构体的地址。通过改变其所存储的地址内容实现数组、结构体的地址。通过改变其所存储的地址内容实现动态数据结构。动态数据结构。l示例:示例: INTEGER,TARGET : I=1255INTEGER,TARGET : I=1255 REAL : R=534.45 REAL : R=534.45 CHARACTER CHARACTER* *5 :S=CHINA5 :S=CHINA INTEGER : A(3)=(/35,45,55/)

15、INTEGER : A(3)=(/35,45,55/) INTEGER,POINTER : P INTEGER,POINTER : P P=I P=I11.1 概述第十一章第十一章 指针与动态数据结构指针与动态数据结构 12551255534.45534.45CHINACHINA35354545555510001000整型变量整型变量I,I,地址地址1000,41000,4字节字节, ,值值12551255实型变量实型变量R,R,地址地址1004,41004,4字节字节, ,值值534.45534.45字符型变量字符型变量S,S,地址地址1008,51008,5字节字节, ,值值CHINACH

16、INA整型数组整型数组A,A,地址地址1013,121013,12字节字节, ,值值3535、4545、5555指针变量指针变量P,P,地址地址1025,41025,4字节字节, ,值为值为100010000 01 11000100010041004100810081013101310251025n n概述概述存储结构存储结构访问方式访问方式指针声明指针声明指针状态指针状态03/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.1 11.1 概述概述/ /访问方式访问方式/ /示例示例11.1 概述第十一章第十一章 指针与动态数据结构指针与动态数据结构l直接访问直接访问: :直

17、接访问存储单元中的内容。如对普通变量、数直接访问存储单元中的内容。如对普通变量、数组元素、结构体成员的访问,采用直接访问方式。如图组元素、结构体成员的访问,采用直接访问方式。如图11-11-2 2所示。所示。l间接访问间接访问: :先从存储单元中得到被访问存储单元地址,然后先从存储单元中得到被访问存储单元地址,然后通过该地址访问被访问存储单元中的内容。如对指针变量通过该地址访问被访问存储单元中的内容。如对指针变量的访问,采用间接访问方式。如图的访问,采用间接访问方式。如图11-311-3所示。所示。l指针变量存储单元中保存目标变量地址,通常用箭头表示。指针变量存储单元中保存目标变量地址,通常用

18、箭头表示。F90F90指针保存目标变量名称,将指针看成目标变量的别名。指针保存目标变量名称,将指针看成目标变量的别名。l指针变量声明后指针变量声明后, ,未分配存储空间未分配存储空间, ,访问前需分配存储空间。访问前需分配存储空间。 ( (示例示例) )I I125125125125J J3753753 3* *125125I=125I=125J=3J=3* *I IP PI I125125125125J J3753753 3* *1251253 3* *P PI I地址地址I=125I=125P=IP=IJ=3J=3* *I II I2525! !例例11.1 11.1 使用指针实现两个整数

19、交换使用指针实现两个整数交换INTEGER,TARGET : I,J INTEGER,TARGET : I,J ! !声明两个目标变量声明两个目标变量I I和和J JINTEGER,POINTER : P1,P2,P3 INTEGER,POINTER : P1,P2,P3 ! !声明三个指针变量声明三个指针变量P1P1、P2P2和和P3P3I=25;J=35 I=25;J=35 ! !给目标变量给目标变量I I和和J J直接赋值直接赋值P1=I;P2=JP1=I;P2=J ! !给指针分配指向给指针分配指向I I和和J J的存储空间的存储空间 PRINTPRINT* *, ,未交换数据:未交换

20、数据:,P1,P2 ,P1,P2 ! !通过指针变量间接输出通过指针变量间接输出I I和和J J的值的值P3=P1;P1=P2;P2=P3 P3=P1;P1=P2;P2=P3 ! !交换指针交换指针P1P1和和P2P2指向的目标变量指向的目标变量PRINTPRINT* *, ,已交换数据:已交换数据: ,P1,P2 ,P1,P2 ! !通过指针变量间接输出通过指针变量间接输出J J和和I I的值的值ENDENDI I2525P1P1图图11-4 11-4 指针交换指针交换J J3535P2P2J J3535P2P2P1P1P3P3交换前交换前交换后交换后概述概述存储结构存储结构访问方式访问方式

21、指针声明指针声明指针状态指针状态03/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.2 11.2 指针引用和赋值指针引用和赋值/ /指针引用指针引用l指针引用:指针引用:引用指针所指目标变量。引用指针所指目标变量。11.2 指针引用和赋值第十一章第十一章 指针与动态数据结构指针与动态数据结构指针引用指针引用指针赋值指针赋值结构体指针结构体指针! !例例11.211.2INTEGER,TARGET : R=25INTEGER,TARGET : R=25INTEGER,POINTER : PINTEGER,POINTER : PP=RP=RM=3M=3* *P-4P-4PRIN

22、TPRINT* *, P,M, P,MENDEND! !结果:结果:2525,7171! !例例11.311.3INTEGER,POINTERINTEGER,POINTER:P1,PP1,PINTEGER,TARGETINTEGER,TARGET:R=12R=12P=RP=RR=2R=2* *P PPRINTPRINT* *,P,R,P,RENDEND! !结果:结果:2424,2424! !例例11.411.4INTEGER,TARGETINTEGER,TARGET:R=13R=13INTEGER,POINTERINTEGER,POINTER:P1,P2P1,P2PRINTPRINT* *,

23、P1,P2,R ,P1,P2,R P1=RP1=RP2=P1P2=P1ENDEND ! !结果:结果:1313,1313,131303/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.2 11.2 指针引用和赋值指针引用和赋值/ /指针赋值指针赋值l别名赋值:别名赋值:将目标变量名作为别名赋值给指针。将目标变量名作为别名赋值给指针。l数据赋值:数据赋值:将数据表达式值赋值给指针所指目标变量。将数据表达式值赋值给指针所指目标变量。l一般格式:一般格式: = = = = 11.2 指针引用和赋值第十一章第十一章 指针与动态数据结构指针与动态数据结构! !例例11.511.5INT

24、EGR,TARGETINTEGR,TARGET:R1=25R1=25INTEGR,TARGETINTEGR,TARGET:R2=35R2=35INTEGER,POINTERINTEGER,POINTER:P1,P2P1,P2P1=R1P1=R1P2=R2P2=R2P1=P2P1=P2PRINTPRINT* *, P1,P2, P1,P2ENDEND! !结果:结果:3535,3535P1P1P1P1R1R12525R2R2P2P23535R1R13535R2R2P2P23535指针引用指针引用指针赋值指针赋值结构体指针结构体指针03/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心

25、11.2 11.2 指针引用和赋值指针引用和赋值/ /结构体指针结构体指针11.2 指针引用和赋值第十一章第十一章 指针与动态数据结构指针与动态数据结构l结构体指针:结构体指针:指向结构体的指针。指针可为结构体别名。指向结构体的指针。指针可为结构体别名。 例:例: TYPE date_recordTYPE date_record INTEGER(2) year INTEGER(2) year INTEGER(1) month,day INTEGER(1) month,day END TYPE date_record END TYPE date_record TYPE(date_record),

26、TARGET : date TYPE(date_record),TARGET : date TYPE(date_record),POINTER : P TYPE(date_record),POINTER : P P=dateP=date P.year=1995 P.year=1995;P.month=12P.month=12;P.day=25P.day=25 y=3+P.year y=3+P.year; m=P.month-2m=P.month-2;d=5+P.dayd=5+P.day PRINT PRINT* *,date,date PRINT PRINT* *,P,P PRINT PRIN

27、T* *,y,m,d,y,m,d END END ! !输出结果:输出结果: !1995 12 25!1995 12 25 !1995 12 25 !1995 12 25 !1998 10 30 !1998 10 30YearYearMonthMonthdaydayP Pdatedate1995199512122525P Pdatedate指针引用指针引用指针赋值指针赋值结构体指针结构体指针03/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.3 11.3 整型指针整型指针/ /概述概述l整型指针整型指针: :地址按地址按4 4字节整数对待的指针。整型指针可参与字节整数对待的

28、指针。整型指针可参与整数运算。整数运算。l整型指针组成整型指针组成: :指针、基变量、目标对象。指针、基变量、目标对象。l创建指针步骤创建指针步骤: :u第一步:将一个指针基变量链接在一个整型指针上。第一步:将一个指针基变量链接在一个整型指针上。 POINTER(POINTER( , )u第二步:将目标对象地址赋值给整型指针。第二步:将目标对象地址赋值给整型指针。 =LOC(=LOC() =MALLOC(=MALLOC()l标准函数标准函数LOCLOC功能功能: :获得目标对象起始内存地址。获得目标对象起始内存地址。l标准函数标准函数MALLOCMALLOC功能功能: :计算表达式值计算表达式

29、值n n,分配,分配n n个字节存储单个字节存储单元,获得存储单元起始地址。元,获得存储单元起始地址。 (示例示例)11.3 整型指针第十一章第十一章 指针与动态数据结构指针与动态数据结构概述概述例例11.611.6例例11.711.703/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.3 11.3 整型指针整型指针/ /例例11.611.6分析下面程序分析下面程序 REAL A(10),B(5) REAL A(10),B(5) POINTER POINTER(P,BP,B) P=LOC(A)P=LOC(A) A(2)=125.0 A(2)=125.0 ! !等价于设置等价

30、于设置B(2)B(2)为为125.0125.0 PRINT PRINT* *, B(2) , B(2) END END通过通过POINTERPOINTER语句语句, ,将指针基数组将指针基数组B B与目标对象数组与目标对象数组A A建立联系建立联系, ,即指针即指针P P中存放的数组中存放的数组A A的起始地址就是数组的起始地址就是数组B B的起始地址的起始地址, ,所所以运行程序后以运行程序后, ,输出输出B(2)B(2)的值为的值为125.0125.0。 11.3 整型指针第十一章第十一章 指针与动态数据结构指针与动态数据结构概述概述例例11.611.6例例11.711.703/04第二学

31、期第二学期苏州科技大学计算中心苏州科技大学计算中心11.3 11.3 整型指针整型指针/ /例例11.711.7分析下面程序分析下面程序 INTEGER : A(5),BINTEGER : A(5),B POINTER POINTER(P,BP,B) P=LOC(A)P=LOC(A) DO I=1,5 DO I=1,5 B=I B=I* *1010 P=P+4 P=P+4 ENDDO ENDDO PRINT PRINT* *,A,A END END ! !输出结果为:输出结果为: 10 20 30 40 5010 20 30 40 50 通过指针运算和指针基变量通过指针运算和指针基变量B B的

32、赋值操作的赋值操作, ,生成数组生成数组A A的的5 5个元个元素值。通过指针运算和指针基变量素值。通过指针运算和指针基变量B B的赋值操作的赋值操作, ,生成数组生成数组A A的的5 5个元素值。整型指针个元素值。整型指针P P增加增加4,4,相当于把数组的下标加相当于把数组的下标加1 1。11.3 整型指针第十一章第十一章 指针与动态数据结构指针与动态数据结构A AB B1 2 3 4 51 2 3 4 5P PP PP PP PP P概述概述例例11.611.6例例11.711.703/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.3 11.3 整型指针整型指针/ /

33、概述概述/ /示例示例l整型指针整型指针: :地址按地址按4 4字节整数对待的指针。整型指针可参与字节整数对待的指针。整型指针可参与整数运算。整数运算。l整型指针组成整型指针组成: :指针、基变量、目标对象。指针、基变量、目标对象。l创建指针步骤创建指针步骤: :u第一步:将一个指针基变量链接在一个整型指针上。第一步:将一个指针基变量链接在一个整型指针上。 POINTER(POINTER( , )u第二步:将目标对象地址赋值给整型指针。第二步:将目标对象地址赋值给整型指针。 =LOC(=LOC() =MALLOC(=MALLOC()l标准函数标准函数LOCLOC功能功能: :获得目标对象起始内

34、存地址。获得目标对象起始内存地址。l标准函数标准函数MALLOCMALLOC功能功能: :计算表达式值计算表达式值n n,分配,分配n n个字节存储单个字节存储单元,获得存储单元起始地址。元,获得存储单元起始地址。 (示例示例)11.1 概述第十一章第十一章 指针与动态数据结构指针与动态数据结构概述概述例例11.611.6例例11.711.7INTEGER INTEGER :I,J=20I,J=20POINTERPOINTER(P,IP,I)! !建立指针基变量建立指针基变量I I和目标对象和目标对象J J的等价关系的等价关系P=LOC(J) P=LOC(J) ! !将目标对象将目标对象J J

35、的地址赋予整型指针变量的地址赋予整型指针变量P PPRINTPRINT* *,P,I,J ,P,I,J ! !输出结果为:输出结果为:4442932 20 204442932 20 20I=30I=30PRINTPRINT* *,P,I,J ,P,I,J ! !输出结果为:输出结果为:4442932 30 304442932 30 30J=40J=40PRINTPRINT* *,P,I,J ,P,I,J ! !输出结果为:输出结果为:4442932 40 404442932 40 40ENDEND03/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.4 11.4 整型指针整型

36、指针/NULLIFY/NULLIFYlNULLIFY:NULLIFY:将指针设置为空状态。空状态可用标准函数将指针设置为空状态。空状态可用标准函数ASSOCIATEDASSOCIATED进行检测。进行检测。 指针声明后,一般应将其设置为空状态。指针声明后,一般应将其设置为空状态。 如:如:INTEGERINTEGER,POINTER : PPOINTER : P NULLIFY NULLIFY(P P)11.4 与指针相关的函数和语句第十一章第十一章 指针与动态数据结构指针与动态数据结构NULLIFYNULLIFYASSOCIATEDASSOCIATEDALLOCATEALLOCATEDEAL

37、LOCATEDEALLOCATE03/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.4 11.4 整型指针整型指针/ASSOCIATED/ASSOCIATEDlASSOCIATED:ASSOCIATED:判定是否有目标对象与指针链接。判定是否有目标对象与指针链接。 如:如: REAL A1(:),A2(:),A3(5)REAL A1(:),A2(:),A3(5) POINTER A1,A2 POINTER A1,A2 TARGET A3 TARGET A3 LOGICAL S1,S2,S3 LOGICAL S1,S2,S3 A1=A3 A1=A3 !指针赋值!指针赋值 A2

38、=A3 A2=A3 !指针赋值!指针赋值 S1=ASSOCIATED(A1)S1=ASSOCIATED(A1)!结果!结果TRUE;TRUE;指针指针A1A1已指向目标变量已指向目标变量 S2=ASSOCIATED(A1,A3) S2=ASSOCIATED(A1,A3) !结果!结果TRUE;A1TRUE;A1已指向已指向A3A3 S3=ASSOCIATED(A1,A2) S3=ASSOCIATED(A1,A2) !结果!结果TRUE;A1TRUE;A1和和A2A2都指向都指向A3A311.4 与指针相关的函数和语句第十一章第十一章 指针与动态数据结构指针与动态数据结构NULLIFYNULLI

39、FYASSOCIATEDASSOCIATEDALLOCATEALLOCATEDEALLOCATEDEALLOCATE03/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.4 11.4 整型指针整型指针/ALLOCATE/ALLOCATElALLOCATE:ALLOCATE:为指针分配所指向的存储空间。为指针分配所指向的存储空间。 如:如: REALREAL,POINTER : P1POINTER : P1 ALLOCATE(P1) ALLOCATE(P1) P1=911.911 P1=911.91111.4 与指针相关的函数和语句第十一章第十一章 指针与动态数据结构指针与动态

40、数据结构NULLIFYNULLIFYASSOCIATEDASSOCIATEDALLOCATEALLOCATEDEALLOCATEDEALLOCATEP1P1P1P1911.911911.91103/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.4 11.4 整型指针整型指针/DEALLOCATE/DEALLOCATElDEALLOCATE:DEALLOCATE:释放指针所指存储空间。释放指针所指存储空间。 如:如: REALREAL,POINTER : P1POINTER : P1 ALLOCATE(P1) ALLOCATE(P1) P1=911.911 P1=911.91

41、1 DEALLOCATE DEALLOCATE(P1P1)11.4 与指针相关的函数和语句第十一章第十一章 指针与动态数据结构指针与动态数据结构P1P1P1P1911.911911.911NULLIFYNULLIFYASSOCIATEDASSOCIATEDALLOCATEALLOCATEDEALLOCATEDEALLOCATE03/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.5 11.5 指针数组指针数组/ /指针数组指针数组11.5 指针数组第十一章第十一章 指针与动态数据结构指针与动态数据结构指针数组指针数组函数返回函数返回l指针数组指针数组: :具有具有POINTE

42、RPOINTER属性的数组。指针数组类似动态数属性的数组。指针数组类似动态数组,声明时,指针数组不指定数组维的上下界。如:组,声明时,指针数组不指定数组维的上下界。如: REAL,DIMENSION(:),POINTER : AREAL,DIMENSION(:),POINTER : A l存储分配存储分配: :指针数组需通过指针数组需通过ALLOCATEALLOCATE语句分配存储空间。如:语句分配存储空间。如: ALLOCATEALLOCATE(A A(5050) 例:使用指针数组存储下三角矩阵。例:使用指针数组存储下三角矩阵。 (程序程序)1 0 0 01 0 0 01 1 0 01 1

43、0 01 1 1 01 1 1 01 1 1 11 1 1 1R R RRR11111111111 12 23 34 4T03/04第二学期第二学期苏州科技大学计算中心苏州科技大学计算中心11.5 11.5 指针数组指针数组/ /函数返回函数返回11.5 指针数组第十一章第十一章 指针与动态数据结构指针与动态数据结构lFORTRAN90FORTRAN90允许指针数组作为函数值返回。允许指针数组作为函数值返回。PROGRAM exam1110PROGRAM exam1110 IMPLICIT NONE IMPLICIT NONE INTEGER,DIMENSION(10): X=(/11,8,1

44、5,4,20,3,5,18,21,17/) INTEGER,DIMENSION(10): X=(/11,8,15,4,20,3,5,18,21,17/) PRINT PRINT (20I3)(20I3),array(X),array(X)CONTAINS CONTAINS FUNCTION array(A) FUNCTION array(A) INTEGER,DIMENSION(:), POINTER : array INTEGER,DIMENSION(:), POINTER : array INTEGER,DIMENSION(:) : A INTEGER,DIMENSION(:) : A I

45、NTEGER I,J,T INTEGER I,J,T ALLOCATE(array(SIZE(A) ALLOCATE(array(SIZE(A) ! !为为arrayarray数组分配存储单元数组分配存储单元 array=Aarray=A DO I=1,SIZE(A)-1 DO I=1,SIZE(A)-1 DO J=I+1,SIZE(A) DO J=I+1,SIZE(A) IF (array(I)array(J) THEN IF (array(I)array(J) THEN T=array(J) T=array(J) array(J)=array(I) array(J)=array(I) array(I)=T array(I)=T ENDIF ENDIF ENDDO ENDDO ENDDO ENDDO END

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论