指標的用法 |
答題得分者是:collonil
|
fullgui
一般會員 發表:22 回覆:28 積分:10 註冊:2003-04-01 發送簡訊給我 |
各位大大:
我寫了一個程式如下: #include
|
collonil
中階會員 發表:13 回覆:56 積分:63 註冊:2003-03-26 發送簡訊給我 |
|
fullgui
一般會員 發表:22 回覆:28 積分:10 註冊:2003-04-01 發送簡訊給我 |
|
collonil
中階會員 發表:13 回覆:56 積分:63 註冊:2003-03-26 發送簡訊給我 |
|
fullgui
一般會員 發表:22 回覆:28 積分:10 註冊:2003-04-01 發送簡訊給我 |
|
collonil
中階會員 發表:13 回覆:56 積分:63 註冊:2003-03-26 發送簡訊給我 |
引言: 不好意思,我是要把a struct 轉型成b struct,然後藉此來存取bb。謝謝。a struct(test)在記憶體中的資料類似這樣 {1023, b struct的位置} b struct在記憶體中的資料類似這樣 {1033} 不管如何轉型, test都會指向a struct的位置, 而不會指向b struct 當然也就讀不到1033... 除非重新設定test讓它指向b struct Ex. test = (a*)test->next; 但這樣就失去了指向a struct的指標了.. -- BCB學習中~~ 發表人 - |
fullgui
一般會員 發表:22 回覆:28 積分:10 註冊:2003-04-01 發送簡訊給我 |
|
collonil
中階會員 發表:13 回覆:56 積分:63 註冊:2003-03-26 發送簡訊給我 |
|
fullgui
一般會員 發表:22 回覆:28 積分:10 註冊:2003-04-01 發送簡訊給我 |
|
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
你好: a structure的第一個儲存資料為1023,第二個資料是一個指標指向存放b
structure的資料,當你將test強制轉型為b資料型態的p時,p資料直接對映
到test的資料如下
p->bb = test->aa;
NULL = test->next;
強制轉型是將記憶體位置直接對映,所以p->bb就對映test的第一筆資料1023
你不改成collonil的方法,p->bb永遠不會是1033。如果要硬拗,請服用下面的
方法
b* testfun(b* p) { printf("%d",((b*)(((a*)p)->next))->bb); return(p); }有點多此一舉 或是a structure 改成 typedef struct a { b *next; //上下交換 int aa; }a; b* testfun(b* p) { printf("%d",((b*)(p->bb))->bb); return(p); }參考看看囉.只能用這樣改,我沒有法術,不能直接叫電腦改成你想的那樣 電腦其實是很笨滴 |
fullgui
一般會員 發表:22 回覆:28 積分:10 註冊:2003-04-01 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |