[請益] 關於ALLOCATE 副程式該怎麼宣告?

看板Fortran作者 (香腸)時間11年前 (2013/02/26 13:33), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串1/1
主程式的宣告 real*8,allocatable::xi(:),ri(:),zi(:),yi(:),ECL(:) 副程式的宣告 subroutine FCN (XA, F, n1) integer n1,g,o real XA(n1), F(n1) real beta1,lambda1 real sum1,sum2,sum3,sum4,sum5 real*8,allocatable::xi(:),ri(:) common/a2/beta1,lambda1 由於主程式與副程式都很龐大所以我就省略,只貼上宣告變數的地方有疑惑 最後執行時出現了這行想請問這是跟我的陣列大小有關嗎? forrtl severe <161>:program EXception - array bounds exceeded 副程式這樣宣告陣列可以嗎?? 懇請各位高手幫我看看 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.130.100.173

02/27 09:48, , 1F
使用超出你宣告的大小會這樣,例如宣告a(10)但你想用a(11)
02/27 09:48, 1F

03/02 11:40, , 2F
你要先確定矩陣爆掉是出現在哪裡?
03/02 11:40, 2F

03/02 11:42, , 3F
再來就是副程式可以直接這樣 SUBROUTINE(N,X)
03/02 11:42, 3F

03/02 11:43, , 4F
INTEGER N REAL X(N) 如此不用在副程式中使用ALLOCATABLE
03/02 11:43, 4F
文章代碼(AID): #1HB4ab9S (Fortran)
文章代碼(AID): #1HB4ab9S (Fortran)