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

[問題]4維陣列要怎麼傳遞到function裡去啊

尚未結案
plihui
初階會員


發表:88
回覆:96
積分:41
註冊:2003-07-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-05 20:50:36 IP:218.168.xxx.xxx 未訂閱
如題: 我今天宣告了一個陣列 int Record[10][10][10][10]={0}; 要怎麼傳入function做運算啊?
void Save(int Record[10][10][10][10])
{
 //對Record做運算
}
結果complier說存取違法 請問該怎麼解決這個問題
swindler
一般會員


發表:13
回覆:22
積分:17
註冊:2003-01-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-05 20:59:01 IP:163.28.xxx.xxx 未訂閱
傳指標就好了 void Save(int ****Record) { //對Record做運算 }
plihui
初階會員


發表:88
回覆:96
積分:41
註冊:2003-07-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-05 22:05:05 IP:218.168.xxx.xxx 未訂閱
好像不太行耶 因為 complier 說: cannot convert double(*)[10][10][10] to double****
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-05 22:32:07 IP:211.76.xxx.xxx 未訂閱
引言: 好像不太行耶 因為 complier 說: cannot convert double(*)[10][10][10] to double****
plihui你好: 試試下面的code,看能不能成功
 
void CallMe(int (*Test)[10][10][10])
{
Form1->Caption = "Succeed";
}    void __fastcall TForm1::Button1Click(TObject *Sender)
{
int Test[10][10][10][10];
CallMe(Test);
}
//------
plihui
初階會員


發表:88
回覆:96
積分:41
註冊:2003-07-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-05 23:59:49 IP:218.168.xxx.xxx 未訂閱
給定陣列值時,會有run time error ex:
void CallMe(int (*Test)[10][10][10])
{
 for(int a=0;a<10;a  )
  for(int b=0;b<10;b  )
    for(int c=0;c<10;c  )
     for(int d=0;d<10;d  )
        Test[a][b][c][d]=a*b*c*d;
}
plihui
初階會員


發表:88
回覆:96
積分:41
註冊:2003-07-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-06-06 00:20:23 IP:218.168.xxx.xxx 未訂閱
剛試過前面的學長所提出的方法, 在10*10*10*10的array應該是沒問題的 舉錯例子了, 其實我現在要用到的Array算是蠻大的吧
 double Table[3][12][200][200];
  void Fun_ini(double Table[3][12][200][200])
  {
  for(int a=0;a<101;a  )
   for(int b=0;b<101;b  )
    for(int c=0;c<12;c  )
     for(int d=0;d<3;d  )
     Table[c][d][b][a]=a*b*c*d;
  }
就會出現 run time err 說存取違法... } [/code]
plihui
初階會員


發表:88
回覆:96
積分:41
註冊:2003-07-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-06-06 00:22:40 IP:218.168.xxx.xxx 未訂閱
原來是我array大小搞錯 ...感謝大大指導
swindler
一般會員


發表:13
回覆:22
積分:17
註冊:2003-01-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-06-06 00:40:04 IP:61.217.xxx.xxx 未訂閱
剛剛可能說的不清楚 一般而言 很少人直接傳記憶體的吧 傳指標速度才會快阿    int ****Record; //先配置指標 //讓指標指到它對應的記憶體位置  Record=new int[10]; for(register int i=0;i<10;i ) *(Record i)=new short int*[10]; for(register int i=0;i<10;i ) for(register int j=0;j<10;j ) *(*(Record i) j)=new int**[10]; for(register int i=0;i<10;i ) for(register int j=0;j<10;j ) for(register int k=0;k<10;k ) *(*(*(Record i) j) k)=new int***[10]; /*這裡可以就可以對Record指標所指的記憶體進行處理 當Record[10][10][10][10]來用*/ //傳指標給副程式 副程式會對指標所指到的記憶體做處理 Save(int ****Record)
swindler
一般會員


發表:13
回覆:22
積分:17
註冊:2003-01-08

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-06-06 00:40:20 IP:61.217.xxx.xxx 未訂閱
剛剛可能說的不清楚 一般而言 很少人直接傳記憶體的吧 傳指標速度才會快阿    int ****Record; //先配置指標 //讓指標指到它對應的記憶體位置  Record=new int[10]; for(register int i=0;i<10;i ) *(Record i)=new int*[10]; for(register int i=0;i<10;i ) for(register int j=0;j<10;j ) *(*(Record i) j)=new int**[10]; for(register int i=0;i<10;i ) for(register int j=0;j<10;j ) for(register int k=0;k<10;k ) *(*(*(Record i) j) k)=new int***[10]; /*這裡可以就可以對Record指標所指的記憶體進行處理 當Record[10][10][10][10]來用*/ //傳指標給副程式 副程式會對指標所指到的記憶體做處理 Save(int ****Record)
系統時間:2024-06-27 0:44:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!