作者Patayasky (PATAYA)
看板C_and_CPP
標題Re: [問題] 關於void *一問
時間Tue Jul 14 17:44:09 2009
不好意思
我指標學的不太好 看不太懂指來指去意思
使用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