Re: [問題] 型式參數為void *的問題
※ 引述《ppttcc (ppttcc)》之銘言:
: 問題:
: 我想傳一個 tm 結構至自訂的函數中,但形式參數寫成void *,
: 函數定義如下,但產生問題
: void* timefun(void * st)
: {
: cout<<st->tm_year;//此行有問題,
: //編譯器訊息為 void* is not a pointer-to-object type
: }
: 我想這問題是因為沒有人告訴編譯器st將會是個tm結構的指標,
: 自然也不可能取用結構的成員.
: 但是否仍有解?(除了將void 改為tm)
: 且如此一來將參數寫成void *的那些函數意義又是什麼?
之前的推文有人使用offset的方式,寫成
cout << *(int *)((size_t)d + offset)
但我的輸出一直是指標所指記憶體位址的整數型態,
ex.指標本身位址所在為0x23fe14,所指記憶體位址在0x325e0]
但輸出卻是206304,也就是位址0x325e0的整數型
後來改成cout << **(size_t **)((size_t)d + offset)
才找出指標所指記憶體所存的值.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.38.1.44
→
10/28 15:08, , 1F
10/28 15:08, 1F
→
10/28 15:17, , 2F
10/28 15:17, 2F
→
10/28 15:34, , 3F
10/28 15:34, 3F
→
10/28 15:43, , 4F
10/28 15:43, 4F
→
10/28 23:05, , 5F
10/28 23:05, 5F
討論串 (同標題文章)