全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1003
推到 Plurk!
推到 Facebook!

陣列與函式之間的傳遞~~

尚未結案
kun_tien
一般會員


發表:10
回覆:2
積分:2
註冊:2005-09-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-07 19:51:19 IP:140.121.xxx.xxx 未訂閱
假設: TABLE[2][3]={{1,1,1},{2,2,2}},TABLE1[2][2]={{1,1},{2,2}}; void a(int [][]); ... main() { ... general(TABLE); } void general(int x[][3])//此函式為通用的常用函式,其中3為其行數 { ... } 說明:上列呼叫general(TABLE),其中x[][3]定義為3行,可執行無誤;但是 general(TABLE1),其中x[][3]定義為3行,而TABLE1定義為2行,所以執 行會發生錯誤。 不過我用了很多不同行的陣列,都必須代入general()此函式中,而general其引數x[][3]固定為3行不變,不知道有沒有發法可以解決此問題?
derrenbol1
中階會員


發表:5
回覆:113
積分:93
註冊:2004-12-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-11-08 07:19:20 IP:210.202.xxx.xxx 未訂閱
To kun_tien:      建議你將general函數改成下面:      
  void general(int **table, int x, int y)
  
這樣參數傳入時, 你指定其傳入的二維陣列大小; 在general中:
    ...
    for( i = 0 ; i < x ; i    )
       for( j = 0 ; j < y ; j    )
           // Do something to access table
  
這樣應就可避免general函數在陣列大小不定下, 產生 不確的記憶體範圍存取. 請參考
系統時間:2024-05-10 14:08:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!