24小时热门版块排行榜    

查看: 2541  |  回复: 15

夕阳西下

金虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
如果返回值是数组,需要使用接口。
11楼2014-04-22 10:23:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hanye0517

木虫 (小有名气)

引用回帖:
10楼: Originally posted by jerkwin at 2014-04-21 23:49:01
改改这个代码试试
http://stackoverflow.com/questions/3828094/function-returning-an-array-in-fortran

这个做不到,虽然是函数返回一个数组,但是赋值时仍然要声明一个数组才能让函数赋值。相当与没有用。
道之所在,虽千万人吾往矣。
12楼2014-04-22 11:19:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

锐利的碎片

木虫 (正式写手)

star watcher

引用回帖:
12楼: Originally posted by hanye0517 at 2014-04-22 11:19:55
这个做不到,虽然是函数返回一个数组,但是赋值时仍然要声明一个数组才能让函数赋值。相当与没有用。...

所以你是不想申明变量?
13楼2014-04-22 13:14:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hanye0517

木虫 (小有名气)

目前有个模块化的方法就是分配全局变量数组。具体方法是:
。。。。。。。。。。。。。
MODULE AAA
INTEGER ::N
REAL,DIMENSION(:),ALLOCATLABLE,SAVE:: A,B,C,D
END MODULE
。。。。。。。。。。。。。。。。。。。。。
SUBROUTINE BBB
USE AAA
READ *,N
ALLOCATE(A(N),B(N),C(N),D(N))
END SUBROUTINE
。。。。。。。。。。。。。。。。。。。。
PROGRAM CCC
CALL BBB!调用分配全局变量数组的 子程序。
道之所在,虽千万人吾往矣。
14楼2014-04-22 16:20:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

supersunyan

金虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
不知你做什么用,我们计算时会用到多个网格块,每个块都是不定大小的,用时循环定义就是了。如:
module data
  type blocktype
     integer : :n
     real,allocatable:: x(
end blocktype

type(blocktype),alloacatable::blk(

end module data

program main
use data
implicit none
integer :: i

allocate(blk(100))
do i=1,100
  blk(i)%n=i
allocate(blk(i)%x(blk(i)%n))
enddo

end program

[ 发自小木虫客户端 ]
默默奋斗,实现梦想
15楼2014-04-22 21:03:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

supersunyan

金虫 (正式写手)

那个笑脸不知怎么出来的,应为:)

[ 发自小木虫客户端 ]
默默奋斗,实现梦想
16楼2014-04-22 21:05:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hanye0517 的主题更新
信息提示
请填处理意见