永发信息网

急问fortran编程问题

答案:3  悬赏:10  手机版
解决时间 2021-02-22 04:42
program arraytest2
implicit none
integer,allocatable::a(:)
integer::b(2)=(/1,3/)
call sub(a,b)
print*,a
pause
end program

subroutine sub(a,b)
integer,intent(out),allocatable::a(:)
integer,intent(in)::b
allocate(a(size(b)))
a=b+1
end subroutine

编译出现一个错误:
Error: A dummy argument name is invalid in this context. [A]
实际上,我的源程序是要从subroutine输出一个数组,其长度是在subroutine运行过程中确定的。因此我在主程序里声明integer,allocatable::a(:),在subroutine里声明integer,intent(out),allocatable::a(:)。
因源程序较长,不详细贴出了。谢谢您的回答,任何建议都非常感激!

Error是出在subroutine里面
integer,intent(out),allocatable::a(:)
这一行。
最佳答案
fortran里不允许虚参是allocatable的吧
你这个程序应该在主程序call sub(a,b)之前allocate a,然后子程序里用假定形状的数组
integer,intent(out),dimension(:) :: a
全部回答
由于数组a没有定义大小,所以不可出现在虚参里,可将a设置成全局变量,从虚参中删除,我习惯用module,更改程序如下: module adata implicit none integer,allocatable::a(:) endmodule program arraytest2 use adata implicit none integer::b(2)=(/1,3/) call sub(b) print*,a pause end program subroutine sub(b) use adada integer::b allocate(a(size(b))) a=b+1 end subroutine
Fortran2003支持,估计您的编译器有点儿老。 我已在编程爱好者论坛回复了您的问题,不过论坛里的asymptotic兄回复得更完美:)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
太阳的后裔全部歌曲百度云链接
求fate Ons安卓汉化未和谐版的,有18x的那种
苹果平板电脑ipad5的ld码是什么意思
P4 2.4GHz要多少钱,是多少核
运粮河桥地址在什么地方,想过去办事
生存保险的条件是被保险人在一定时期内
中国联通华迎通讯代理点在什么地方啊,我要过
滨洲明珠地址在什么地方,想过去办事
这种类型的图片
读图,甲、乙两地的相对高度是CA. 800米B. 13
Python3 with open 怎样处理文件不存在的异常
三十岁的女人,圆脸,适合什么短发图??
我问一部以监狱为题材的电影,讲的是一个男的
车载充电器伤电瓶吗
还是我,不好意思还有一个 微分方程(y'&
推荐资讯
电脑重装后出现双系统,如何把旧系统删除?
C、CO、H2作还原剂的反应方程式
sin4 cos5 tan8 tan(-3)的三角函数值的符号,
我想知道苹果6到底怎么样,我想知道他的具体
用铁筷子吃饭对人体有好处吗?
宏光驾校(报名处)地址在哪,我要去那里办事
早教机构没有办学资质能全额退款吗
P355N是什么材质
为什么董事会会免去我经理职务
赤壁主锤副杖....杖子专精
北京哪有能配行李箱轮子的?
亚朵酒店宁波南部商务区店我想知道这个在什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?