動態2維指標使用? |
答題得分者是:syntax
|
anderson8585
一般會員 發表:10 回覆:13 積分:4 註冊:2007-08-27 發送簡訊給我 |
typedef struct FrameData{
int *(*pppFrameData); }FrameDataDef; FrameDataDef A[100]; void main(void) { A[0] = new FrameDataDef; (A[0]->pppFrameData)[10] = new int [10][10]; //這行要怎麼去應用 } 試了很久 我要怎麼使用這個2維指標陣列呢? 簡單運用是 int (*T)[10] = new int [10][10]; 但是加了物件的方式去做 則不行 ~~ 還是我有哪裡寫錯呢 |
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
typedef struct FrameData{
int *pppFrameData; }FrameDataDef; FrameDataDef A[100]; void main(void) { A[0] = new FrameDataDef; <--- 還需要 new ?????? A[5]->pppFrameData = new int [100]; <--- 這樣就是 10x10 } 指標怎麼用,站上一堆「新手」文章可以參考 ===================引 用 anderson8585 文 章=================== typedef struct FrameData{ int *(*pppFrameData); }FrameDataDef; FrameDataDef A[100]; void main(void) { A[0] = new FrameDataDef; (A[0]->pppFrameData)[10] = new int [10][10]; //這行要怎麼去應用 } 試了很久 我要怎麼使用這個2維指標陣列呢? 簡單運用是 int (*T)[10] = new int [10][10]; 但是加了物件的方式去做 則不行 ~~ 還是我有哪裡寫錯呢 |
anderson8585
一般會員 發表:10 回覆:13 積分:4 註冊:2007-08-27 發送簡訊給我 |
謝謝你的解答
這樣的寫法還是1維陣列 應該不是2維陣列 還有A[5]沒有NEW FrameDataDef這樣寫會錯吧~ ===================引 用 syntax 文 章=================== typedef struct FrameData{ int *pppFrameData; }FrameDataDef; FrameDataDef A[100]; void main(void) { A[0] = new FrameDataDef; <--- 還需要 new ?????? A[5]->pppFrameData = new int [100]; <--- 這樣就是 10x10 } 指標怎麼用,站上一堆「新手」文章可以參考 ===================引 用 anderson8585 文 章=================== typedef struct FrameData{ int *(*pppFrameData); }FrameDataDef; FrameDataDef A[100]; void main(void) { A[0] = new FrameDataDef; (A[0]->pppFrameData)[10] = new int [10][10]; //這行要怎麼去應用 } 試了很久 我要怎麼使用這個2維指標陣列呢? 簡單運用是 int (*T)[10] = new int [10][10]; 但是加了物件的方式去做 則不行 ~~ 還是我有哪裡寫錯呢 |
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
呵呵,可見你對指標與記憶體使用,並沒有真正的認識清楚喔!
你可以去研究看看 new int [100]; 這樣是一維還是二維還是三維,還是說到底是幾維? A[5]沒有NEW FrameDataDef這樣寫會錯吧~ <--- 這種小問題,跑一下馬上就知道,不用5分鐘,你應該自己去試試 我沒有「這不需要 new」,而用問句結尾,就是要你自己去試一下 ===================引 用 anderson8585 文 章=================== 謝謝你的解答 這樣的寫法還是1維陣列 應該不是2維陣列 還有A[5]沒有NEW FrameDataDef這樣寫會錯吧~ ===================引 用 syntax 文 章=================== typedef struct FrameData{ int *pppFrameData; }FrameDataDef; FrameDataDef A[100]; void main(void) { A[0] = new FrameDataDef; <--- 還需要 new ?????? A[5]->pppFrameData = new int [100]; <--- 這樣就是 10x10 } 指標怎麼用,站上一堆「新手」文章可以參考 ===================引 用 anderson8585 文 章=================== typedef struct FrameData{ int *(*pppFrameData); }FrameDataDef; FrameDataDef A[100]; void main(void) { A[0] = new FrameDataDef; (A[0]->pppFrameData)[10] = new int [10][10]; //這行要怎麼去應用 } 試了很久 我要怎麼使用這個2維指標陣列呢? 簡單運用是 int (*T)[10] = new int [10][10]; 但是加了物件的方式去做 則不行 ~~ 還是我有哪裡寫錯呢
編輯記錄
syntax 重新編輯於 2008-10-20 08:11:34, 註解 無‧
|
anderson8585
一般會員 發表:10 回覆:13 積分:4 註冊:2007-08-27 發送簡訊給我 |
syntax 您好 ~
我題目寫錯了 XD~ 歹勢~ 剛剛看了一下 發現題目我寫錯了 所以才會認為你是錯的 不過真的謝謝你 typedef struct FrameData{ int *pppFrameData; }FrameDataDef; FrameDataDef *A[100]; //所以A[0]我才會NEW一個出來 = =" , 才認為你A[5]沒NEW是錯的 void main(void) { A[0] = new FrameDataDef; A[5] = new FrameDataDef; //這樣就是A[5] NEW出了100的Array空間出來 (這樣是1維的array 不是嗎?) 與A5[100] 類似 A[5]->pppFrameData = new int [100]; //使用的話 memset(A[5]->pppFrameData,0x00,100*sizeof(int)) } 有辦法說做出 A5[10][10] 這樣的方式嗎? 以2維動態記憶體 int (*T)[10] = new int [10][10]; 怎麼應用到上面的struct~ ===================引 用 syntax 文 章=================== 呵呵,可見你對指標與記憶體使用,並沒有真正的認識清楚喔! 你可以去研究看看 new int [100]; 這樣是一維還是二維還是三維,還是說到底是幾維? A[5]沒有NEW FrameDataDef這樣寫會錯吧~ <--- 這種小問題,跑一下馬上就知道,不用5分鐘,你應該自己去試試 我沒有「這不需要 new」,而用問句結尾,就是要你自己去試一下 ===================引 用 anderson8585 文 章=================== 謝謝你的解答 這樣的寫法還是1維陣列 應該不是2維陣列 還有A[5]沒有NEW FrameDataDef這樣寫會錯吧~ ===================引 用 syntax 文 章=================== typedef struct FrameData{ int *pppFrameData; }FrameDataDef; FrameDataDef A[100]; void main(void) { A[0] = new FrameDataDef; <--- 還需要 new ?????? A[5]->pppFrameData = new int [100]; <--- 這樣就是 10x10 } 指標怎麼用,站上一堆「新手」文章可以參考 ===================引 用 anderson8585 文 章=================== typedef struct FrameData{ int *(*pppFrameData); }FrameDataDef; FrameDataDef A[100]; void main(void) { A[0] = new FrameDataDef; (A[0]->pppFrameData)[10] = new int [10][10]; //這行要怎麼去應用 } 試了很久 我要怎麼使用這個2維指標陣列呢? 簡單運用是 int (*T)[10] = new int [10][10]; 但是加了物件的方式去做 則不行 ~~ 還是我有哪裡寫錯呢 |
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
A[5]->pppFrameData = new int [100];
A[5]->pppFrameData[10*X Y] = value; 你滿執著在一定要使用二維陣列宣告 哪就用 typedef struct FrameData{ int ** pppFrameData; }FrameDataDef; int (*A)[10] = new int [10][10]; A[5]->pppFrameData = A; A[5]->pppFrameData[X][ Y] = value; 會多使用 10 個記憶體空間,但這我沒測試,所以語法可能需要小修正 動態陣列宣告的方法,很多,但其實意義都一樣 C/C 的陣列是有名的難用!!沒有『真正』支援多維陣列 我比較傾向使用 單維實作、多維思考,不然就直接使用 vector 物件 (我不喜歡找自己的麻煩) 這兩個網頁寫得還不錯,你可以參考看看 http://72.14.235.104/search?q=cache:6b8rIa6uI3kJ:ehome.hifly.to/showthread.php?threadid=357 c 動態陣列&hl=zh-TW&ct=clnk&cd=2&gl=tw&client=firefox-a http://72.14.235.104/search?q=cache:-a8GlgB1iqoJ:www.cnblogs.com/oomusou/archive/2007/02/25/655759.html c 動態陣列&hl=zh-TW&ct=clnk&cd=6&gl=tw&client=firefox-a 第二連結內,有相關文章,你可以都看看 同時你也可以比較兩位作者的觀念,你會發現,大部分是相同的,不過有一點點不同 A 認為 OK B 認為 no OK 但其實是 OK 的 反過來,也有 A 認為 no OK B 認為 OK 但其實還是 OK 的 我就不浪費網站資源重複多說,你去看看 (其實本站上也有不少,可以查查看看) PS 寫了一個小測試,使用 new 宣告 **,發現 VS 2008 上 C Win Form Application 中,除錯的 Watch value 無法顯示正確的 p[x][u] while p is type ** 但同樣的程式碼, console application 方案就可以顯示,這算是 2008 BUG ? ===================引 用 anderson8585 文 章=================== syntax 您好 ~ 我題目寫錯了 XD~ 歹勢~ 剛剛看了一下 發現題目我寫錯了 所以才會認為你是錯的 不過真的謝謝你 typedef struct FrameData{ int *pppFrameData; }FrameDataDef; FrameDataDef *A[100]; //所以A[0]我才會NEW一個出來 = =" , 才認為你A[5]沒NEW是錯的 void main(void) { A[0] = new FrameDataDef; A[5] = new FrameDataDef; //這樣就是A[5] NEW出了100的Array空間出來 (這樣是1維的array 不是嗎?) 與A5[100] 類似 A[5]->pppFrameData = new int [100]; //使用的話 memset(A[5]->pppFrameData,0x00,100*sizeof(int)) } 有辦法說做出 A5[10][10] 這樣的方式嗎? 以2維動態記憶體 int (*T)[10] = new int [10][10]; 怎麼應用到上面的struct~ ===================引 用 syntax 文 章=================== 呵呵,可見你對指標與記憶體使用,並沒有真正的認識清楚喔! 你可以去研究看看 new int [100]; 這樣是一維還是二維還是三維,還是說到底是幾維? A[5]沒有NEW FrameDataDef這樣寫會錯吧~ <--- 這種小問題,跑一下馬上就知道,不用5分鐘,你應該自己去試試 我沒有「這不需要 new」,而用問句結尾,就是要你自己去試一下 ===================引 用 anderson8585 文 章=================== 謝謝你的解答 這樣的寫法還是1維陣列 應該不是2維陣列 還有A[5]沒有NEW FrameDataDef這樣寫會錯吧~ ===================引 用 syntax 文 章=================== typedef struct FrameData{ int *pppFrameData; }FrameDataDef; FrameDataDef A[100]; void main(void) { A[0] = new FrameDataDef; <--- 還需要 new ?????? A[5]->pppFrameData = new int [100]; <--- 這樣就是 10x10 } 指標怎麼用,站上一堆「新手」文章可以參考 ===================引 用 anderson8585 文 章=================== typedef struct FrameData{ int *(*pppFrameData); }FrameDataDef; FrameDataDef A[100]; void main(void) { A[0] = new FrameDataDef; (A[0]->pppFrameData)[10] = new int [10][10]; //這行要怎麼去應用 } 試了很久 我要怎麼使用這個2維指標陣列呢? 簡單運用是 int (*T)[10] = new int [10][10]; 但是加了物件的方式去做 則不行 ~~ 還是我有哪裡寫錯呢
編輯記錄
syntax 重新編輯於 2008-10-20 18:00:26, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |