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

動態2維指標使用?

答題得分者是:syntax
anderson8585
一般會員


發表:10
回覆:13
積分:4
註冊:2007-08-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-10-03 16:14:42 IP:210.68.xxx.xxx 未訂閱
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-10-17 07:59:37 IP:118.231.xxx.xxx 訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-10-19 15:48:18 IP:210.68.xxx.xxx 未訂閱
謝謝你的解答
這樣的寫法還是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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-10-20 08:01:43 IP:118.231.xxx.xxx 訂閱
呵呵,可見你對指標與記憶體使用,並沒有真正的認識清楚喔!

你可以去研究看看 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-10-20 09:02:48 IP:210.68.xxx.xxx 未訂閱
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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-10-20 17:54:51 IP:118.231.xxx.xxx 訂閱
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, 註解 無‧
系統時間:2024-04-24 15:12:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!