看板 C_and_CPP 關於我們 聯絡資訊
不好意思 我指標學的不太好 看不太懂指來指去意思 使用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
QQ29:*(long*)arg 是先把arg轉型成long* 在對他取值 dereference 07/14 18:25
QQ29:void*可以指向任意型態 也許他這樣可以在副程式在決定要轉型 07/14 18:26
QQ29:成 long* 或是 double*等等 型態 ! 07/14 18:26
tinlans:void * 單純就是萬用指標,只是想放著一個位址時使用。 07/14 22:15
tinlans:像是設計 malloc 這種傳回不特定型別資料位址的函式時也是 07/14 22:16
softwind:型態未定 指標 07/15 00:58
Patayasky:謝謝 我大致了解了 07/15 10:09