線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:853
推到 Plurk!
推到 Facebook!

陣列問題

尚未結案
kikikaka
一般會員


發表:32
回覆:28
積分:12
註冊:2003-09-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-10 13:10:02 IP:163.13.xxx.xxx 未訂閱
int d[640][480], d1[640][480], d2[640][480], d3[640][480] ;    for(int i = 0; i < 3; i  )
{
  //將d1,d2,d3的值 照迴圈分別給d。
} 
請問各位大大,該如何寫呢? 抱歉版主,小弟程式功力很差,不知該為此問題取適當的主題。
pwipwi
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-10 13:43:41 IP:211.76.xxx.xxx 未訂閱
kikikaka你好:     參考:  
 
#include     // Copy from d to d1
std::copy((int*)d,(int*)d 640*480,(int*)d1);    
這麼大的空間,最好用動態配置。不然就要小心Stack overflow… 發表人 - pwipwi 於 2004/11/10 13:47:29
kikikaka
一般會員


發表:32
回覆:28
積分:12
註冊:2003-09-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-10 14:12:24 IP:163.13.xxx.xxx 未訂閱
引言: kikikaka你好: 參考:
 
#include     // Copy from d to d1
std::copy((int*)d,(int*)d 640*480,(int*)d1);    
這麼大的空間,最好用動態配置。不然就要小心Stack overflow… 發表人 - pwipwi 於 2004/11/10 13:47:29
pwipwi大大你好: 不好意思,我問的不夠清楚。
int d[640][480], d1[640][480], d2[640][480], d3[640][480] ;    for(int i = 0; i < 3; i  )
{
  //將d1,d2,d3的值 照迴圈分別給d,先d[][] = d1[][]。
  //分別對d陣列做一些處理,再d[][] = d2[][]。
} 
因為我想用迴圈分別將d1 ,d2, d3的值給d, 可是又不能寫成 d[][] = d(i)[][] 請問該怎麼寫呢? 不好意思,我是新手,問的不好,請多多包涵!
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-10 15:09:34 IP:218.160.xxx.xxx 未訂閱
#include  void *memcpy(void *dest, const void *src, size_t n);
pkdemon
初階會員


發表:2
回覆:51
積分:25
註冊:2004-09-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-10 16:10:29 IP:211.22.xxx.xxx 未訂閱
        int d[640][480], d1[640][480], d2[640][480], d3[640][480] ;
        int *p[3];            p[0] = &d1[0][0];
        p[1] = &d2[0][0];
        p[2] = &d3[0][0];            for(int i = 0; i < 3; i  )
        {
                memcpy(d, p[i], sizeof(d));
        } 
kikikaka你好, 這樣應該可以符合你的要求
kikikaka
一般會員


發表:32
回覆:28
積分:12
註冊:2003-09-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-11-10 18:50:05 IP:163.13.xxx.xxx 未訂閱
引言:
        int d[640][480], d1[640][480], d2[640][480], d3[640][480] ;
        int *p[3];            p[0] = &d1[0][0];
        p[1] = &d2[0][0];
        p[2] = &d3[0][0];            for(int i = 0; i < 3; i  )
        {
                memcpy(d, p[i], sizeof(d));
        } 
kikikaka你好, 這樣應該可以符合你的要求
謝謝brook如pkdemon大大。 我用以上方法試了還是不行。 下面是我的程式碼。 其中 d1, d2, d3, d4四個矩陣,分別代表了四張影像,長寬為640*480。
byte **d, **d1, **d2, **d3, **d4;
byte *p[4];
p[0] = &d1[0][0];
p[1] = &d2[0][0];
p[2] = &d3[0][0];
p[3] = &d4[0][0];
for(int i = 0; i < 4; i  )
{
  memcpy(d, p[i], sizeof(d));
}
 
請問我這樣寫對嗎?還是那裡有問題呢? 不好意思,我是新手,問的不好,請多多包涵!
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-11-10 19:38:29 IP:218.160.xxx.xxx 未訂閱
靜態宣告可,但動態宣告就必須用迴路跑,除非是一維陣列,或者你可用一維陣列當二維陣列. 如: int *d = new int[640*480];
而你原本的 d[20][10] 就必須以 d[20*480 10] 表示之.
kikikaka
一般會員


發表:32
回覆:28
積分:12
註冊:2003-09-26

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-11-14 22:12:11 IP:61.228.xxx.xxx 未訂閱
謝謝brook大哥: 我大概知道怎麼做了!
系統時間:2024-05-18 23:39:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!