Re: [問題] 關於void *一問

看板C_and_CPP (C/C++)作者 (PATAYA)時間16年前 (2009/07/14 17:44), 編輯推噓1(106)
留言7則, 4人參與, 最新討論串3/3 (看更多)
不好意思 我指標學的不太好 看不太懂指來指去意思 使用void* 的意思為何 ※ 引述《QQ29 (我愛阿蓉)》之銘言: : bool xxx( long id, void *arg ) { : long new_test = 3; : *(long*)arg = new_test; : return true; : } : int main() { : long test = 5; : cout<<"目前的test: "<<test<<endl; : xxx( 3, (void*)&test ); 這一行(void*)&test用法是在取何質呢 還有上一個副程式的*(long*)arg是在做啥 可以教導一下嗎 ^^ : cout<<"目前的test: "<<test<<endl; : return 0; : } : 這樣傳應該可以改~變成3 : ※ 引述《DRLai (蘇打)》之銘言: : : 想請問,有辦法更改void *的值嗎? : : 我有一個function定義如下 : : bool xxx( long id, void *arg ) { : : long new_test = 3; : : arg = (void*)new_test; : : return true; : : } : : 主程式如下 : : int main() { : : long test = 5; : : cout<<"目前的test: "<<test<<endl; : : xxx( 3, (void*)test ); : : cout<<"目前的test: "<<test<<endl; : : return 0; : : } : : 而呼叫時,我希望透過這個function能改變test的值 : : 不過似乎有地方寫錯,導致test的值不會改變 : : 請高手給個方向讓我參考一下 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.18.50.4

07/14 18:25, , 1F
*(long*)arg 是先把arg轉型成long* 在對他取值 dereference
07/14 18:25, 1F

07/14 18:26, , 2F
void*可以指向任意型態 也許他這樣可以在副程式在決定要轉型
07/14 18:26, 2F

07/14 18:26, , 3F
成 long* 或是 double*等等 型態 !
07/14 18:26, 3F

07/14 22:15, , 4F
void * 單純就是萬用指標,只是想放著一個位址時使用。
07/14 22:15, 4F

07/14 22:16, , 5F
像是設計 malloc 這種傳回不特定型別資料位址的函式時也是
07/14 22:16, 5F

07/15 00:58, , 6F
型態未定 指標
07/15 00:58, 6F

07/15 10:09, , 7F
謝謝 我大致了解了
07/15 10:09, 7F
文章代碼(AID): #1AN5Dgk9 (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
文章代碼(AID): #1AN5Dgk9 (C_and_CPP)