請問一個指標ㄉ問題.. |
尚未結案
|
Sarick
一般會員 ![]() ![]() 發表:14 回覆:19 積分:6 註冊:2004-01-19 發送簡訊給我 |
|
pwipwi
版主 ![]() ![]() ![]() ![]() ![]() 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
引言: 請問各位前輩, 下面這段Code 是什麼意思阿?? int h[100]; *((WORD *)&(h[10])) = 0x0000; 非常感謝您ㄉ指教...Sarick你好: &(h[10])--->在h陣列第10個元素的地方,取得其位置 (WORD*)---->然後將位置的指標轉型(本來是int*,轉成short*) *... = 0x0000----->然0放入指標所指向的地方。 會這麼寫的用意是保留h[10]的高位數16個bit(int是32bit,WORD是16bit) 結果和下面的Code一樣。 h[10] = h[10] & 0xFFFF0000發表人 - pwipwi 於 2004/06/26 16:59:45 |
Sarick
一般會員 ![]() ![]() 發表:14 回覆:19 積分:6 註冊:2004-01-19 發送簡訊給我 |
|
pwipwi
版主 ![]() ![]() ![]() ![]() ![]() 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
Sarick你好:
我把程式碼再解開一次,有問題的地方再提出來吧。
*((WORD *)&(h[10])) = 0xff; 上面這一行可以轉成下面這些程式碼,結果是一樣的。 int* IntPointerToAraayItem10 = &(h[10); //IntPointerToAraayItem10是一個指標,指向h陣列第10個元素的位置 WORD* PWordToArrayItem10 = IntPointerToAraayItem10; //PWordToArrayItem10也是指向h陣列第10個元素的位置,只是型態不同 *PWordToArrayItem10 = 0xff; //這段程式碼是將0xff數值,放到PWordToArrayItem10所指向的位置,這個位 //置也就是陣列第10個元素的位置這和程式碼h[10]=0xff做的事情是大同小異。 差別在當指標由int*換成WORD*後,0xff會被當成一個WORD的型態,並放入陣列第10個元素的地方。要是沒有加上這個轉換,Oxff會被當會一個int的型態放入。 在bcb中int是32位元,WORD是16位元。所以將0xff當成一個WORD的型態放入時,不會更改到原來陣列裡的16個高位元。差別在此。 說得有點複雜…希望你可以了解 |
Sarick
一般會員 ![]() ![]() 發表:14 回覆:19 積分:6 註冊:2004-01-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |