24小时热门版块排行榜    

查看: 2142  |  回复: 14
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

koorb

铁虫 (初入文坛)

[求助] allocate与data共存的问题

Fortran代码:
integer, allocatable::num(
allocate( num(2) )
data num /2*3/
程序报错,This is an invalid DATA statement object。请指点一下!谢谢!
回复此楼
天道
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)

★ ★
余泽成(金币+2): 谢谢参与应助! 2011-11-14 23:29:55
引用回帖:
10楼: Originally posted by koorb at 2011-11-14 06:47:30:
Data是用来赋初值的,这一点毫无疑问。无论你把它放在哪它都是只能是初始化一个数组变量,再有赋值语句当然将它覆盖了。

我发帖的本意是想问问,对于一个动态分配维数的数组,为什么不能用data初始化。用其它 ...

Data 在编译,分配内存地址的时候就调用了,无论放在程序哪里的,即使是最后一句,在程序入口处都是要执行的,不过不建议放在程序中,你放在程序最后,如果是几行程序还可以,一万行,谁知道会发生什么情况呢?对不?

既然是在分配内存地址时候就调用了的,楼主的程序为啥报错呢? 是因为,程序执行的时候,是先执行的 data NUM() , 既然是动态数组,没有分配地址,又如何赋值呢? 对吧? 所以自然是错误的写法。

» 本帖已获得的红花(最新10朵)

11楼2011-11-14 16:00:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 15 个回答

holmescn

金虫 (正式写手)

【答案】应助回帖


jjdg(金币+1): 感谢参与 2011-11-10 13:07:33
F90的话,不用Data也行啊。直接num=/()/这样的语法就行。
2楼2011-11-10 11:14:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)

【答案】应助回帖

xzhdty: 谢谢参与 2011-11-10 12:13:24
koorb(金币+2): 谢谢! 2011-11-10 13:17:39
example:
CODE:
program test
integer, allocatable :: num(:)
integer i
allocate (num(10))
num = (/(10, i=1,10)/)
print *, num
end program test

3楼2011-11-10 11:24:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)


余泽成(金币+1): 谢谢参与应助! 2011-11-10 21:48:06
引用回帖:
1楼: Originally posted by koorb at 2011-11-10 09:51:32:
Fortran代码:
integer, allocatable::num(
allocate( num(2) )
data num /2*3/
程序报错,This is an invalid DATA statement object。请指点一下!谢谢!

即使在 Fortran 77 中这么用也是不正确的啊, data 必须出现在所有可执行程序之前……

你的这种情况直接 num = 3 就可以了,呵呵……
4楼2011-11-10 13:21:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见