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

void ** 如何解釋

答題得分者是:JackyChang
energybody
一般會員


發表:44
回覆:32
積分:15
註冊:2007-04-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-10-06 13:17:04 IP:114.42.xxx.xxx 訂閱
小弟是BCB 6 初學者,對一些程式看不懂,尤其是指標,能否請各位大大幫忙解釋一下,感謝!

void MeanImage( Byte **srcImg, Byte **DstImg, int Left, int Top, int Right, int Bottom, int MaskLenght ); -------------->Byte ** srcimg 是什麼意思?

void* LENS_IP::new2D( int Width, int Height, int size ) ===========> void * 是什麼意思?
void **p; ===============>void **p 是什麼意思?
p = (void**) new char[ Height *sizeof(void*) Height*Width*size ];===========>sizeof(void*)是什麼意思? (void**)會轉成什麼?

for(int i=0; i
p[i] = ((char *)( p Height) ) i * Width * size;
return p;=============>void * 不是不回傳值, 為何要 return p?


編輯記錄
energybody 重新編輯於 2010-10-08 14:02:06, 註解 無‧
energybody 重新編輯於 2010-10-08 14:03:13, 註解 無‧
energybody 重新編輯於 2010-10-08 14:03:48, 註解 無‧
energybody 重新編輯於 2010-10-08 14:06:29, 註解 無‧
energybody 重新編輯於 2010-10-08 14:30:36, 註解 無‧
JackyChang
一般會員


發表:0
回覆:1
積分:5
註冊:2011-01-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-01-15 12:51:22 IP:220.133.xxx.xxx 訂閱

===================引 用 energybody 文 章===================
小弟是BCB 6 初學者,對一些程式看不懂,尤其是指標,能否請各位大大幫忙解釋一下,感謝!

void MeanImage( Byte **srcImg, Byte **DstImg, int Left, int Top, int Right, int Bottom, int MaskLenght ); -------------->Byte ** srcimg 是什麼意思?

void* LENS_IP::new2D( int Width, int Height, int size ) ===========> void * 是什麼意思?
void **p; ===============>void **p 是什麼意思?
p = (void**) new char[ Height *sizeof(void*) Height*Width*size ];===========>sizeof(void*)是什麼意思?(void**)會轉成什麼?

for(int i=0; i
p[i] = ((char *)( p Height) ) i * Width * size;
return p;=============>void * 不是不回傳值, 為何要 return p?



* 就是指標 (pointer) 的意思,而 void 就是 any type,也就是可以不管任何的資料型別,因此 void * 你可以從右往左看,
"void *" 就是一個 pointer,這個 pointer 指向任何的資料。一般 pointer 在宣告時指定指向的資料型別時,pointer 的遞加(減)運算子,
如 ,-- 等就可以由 Compiler 來計算位移的大小,舉例而言, char *p; p 被定義成指向字元的指標,那 p ; 就是把 p 這個變數
(不是 p 指的字元,如果要的是 p 所指的字元,就要用 *p)的值(會是一個 address)加一個 byte,因為一個 char 佔 1 byte,依此
類推,int *p; p ; 就是把 P 加 4 bytes。

"void **" 用了雙層的指標,因此 void **p; p 就是一個指標(右邊的第一個 *),這個指標指向一個 void *,
換句話說,p 就是一個指標,這個指標指向一個可以指向任何資料型別的指標(左邊的第一個指標)。

void* LENS_IP::new2D( int Width, int Height, int size ) 既然宣告了要回傳一個指向任何資料型別的指標,所以
最後 return p 才是正確的。

系統時間:2017-12-18 9:18:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!