請教型態轉換C->Delphi |
尚未結案
|
yoyo12345
一般會員 發表:33 回覆:77 積分:22 註冊:2003-03-19 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
在 c 語言中, 使用 * 代表著是一種 pointer (指標, 指針) 的變數宣告用詞, 也就是你若是宣告: int *p; 則代表了 p 是一個指向 int 的指標.
void 則是一個 "空", "無" 的意思, 一般書上會寫 "泛用", 也就是可以是任何型態的一種宣告變數詞. 若是用在 function 的話, 代表無回傳值, 如: void mytest() { ... } 代表著 mytest() function 是沒有回傳值的, 但是用在 void *p; 則代表著 p 是一個指向任何東西的指標, 也就是可以指向任何型態, 如 int, char.. 等, 是一種不定型別的指標. 在 delphi 中, 指標的狀況不是很明顯, 一般要使用的話, 除了 pointer 型別外(pointer 是一種泛用指標, 可以指向任何型態的資料), 其他的定型指標必須先宣告, 如:
type PInt = ^integer; PMyRec = ^MyRec; MyRec = Record sName: string; iAge: integer; end; var p: PInt; p2: PMyRec;代表著 p 是一個指向 integer 的指標, 而 p2 是一個指向 MyRec 的指標!! 回歸正題, void *name 代表著是 name 是一個泛用指標, 轉為 delphi 的話, 相當於 name: Pointer; 那麼 void **name 呢, 指的是 name 乃為指向一個泛用指標的泛用指標, 很饒舌對吧, 但就是這樣而已, 沒有什麼難的, 若是要轉為 delphi 的話, 就比較麻煩了, 必須這樣寫: type PPointer = ^Pointer; var name: PPointer;也就如此而已! c/c 就是指標好用, 因為再配合上 array 的概念, 還有 iterator 的話, 真的是很方便的東東, 但是在 delphi 中若要使用的話, 就得宣告, 小心使用, 但是說實在的, 在 delphi 中, 把 pointer 轉為一種更定性的宣告方式, 使得程式看起來更簡單有力, 或許更容易維護及閱讀吧... |
yoyo12345
一般會員 發表:33 回覆:77 積分:22 註冊:2003-03-19 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
int 在 windows 下是一個 4 byte 的整數, unsigned int 也是一樣 4 byte, 只是沒有負的部分, 對應 delphi 的話, 就是: Longword 0..4294967295 unsigned 32-bit 或
Cardinal 0..4294967295 unsigned 32-bit 這兩種型態! 你說的 word 是:
Word 0..65535 unsigned 16-bit
相當於 c 的 unsigned short int 的型態囉!
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |