Fortran中-fcray-pointer动态数组的使用

Fortran中难免有遇到使用-fcray-pointer动态数组的时候,下面的例子从命令行指定动态数组的大小:

! 编译 : gfortran -fcray-pointer test.f90
! 演示[malloc,free,pointer]的使用
! 演示动态分配内存的数组
! 演示指针的用法
! 演示动态分配内存
! Fortran源文件需要保存为UTF8,以便识别中文字符
! 吴徐平 2013-07-20
!------------------------------------
program test_malloc_free_pointer
implicit none
!------------------------------------
integer :: count ! 命令行参数的个数
integer :: pn ! 动态数组大小,从命令行参数中读取
integer :: i
CHARACTER(len=32) :: arg !命令行参数
!------------------------------------
real*8 x(*)  !定义动态数组
real*8 z 
!------------------------------------
pointer(ptr_x,x) !定义指针
!------------------------------------
count = command_argument_count() !获取主程序命令行的输入参数的个数
!------------------------------------
if (count==1) then
	CALL get_command_argument(1, arg)
	read(arg,'(I4)') pn
	if (pn<1) pn=3
else
	pn=5
end if
!------------------------------------
ptr_x = malloc(pn*8) !- 给数组x动态分配内存
!------------------------------------
do i = 1, pn
	x(i) = sqrt(1.0d0 / i) !-数组元素赋值
end do
!------------------------------------
z = 0
do i = 1, pn
	z = z + x(i) !-参与运算
	print *, z !-显示结果
end do
!------------------------------------
call free(ptr_x) !-释放内存
end program test_malloc_free_pointer


有图有真相:


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值