[問題] void* 的問題
我最近在實作 Link List,遇到一個奇怪的問題,
就是void*不是可以接住任意型態的指標嗎?
我寫一個function,舉例說:
void addEvent(LIST* pList, void* pNewData);
(內容略)
然後在main,我先寫好pNewData,像這樣:
EventContent* pNewData = (EventContent*)malloc(sizeof(EventContent));
(pNewData->.......內容略)
爾後呼叫 addEvent(pList, pNewData);
Compiler完全沒問題,可以過。
不過一樣的情形我寫一個Traverse 的function:
void traverse(LIST*, int, void**);
(內容略)
呼叫traverse(pList, 0, &pNewData);
Compiler卻說 「無法將參數 從 'EventContent **' 轉換成 'void **'」
我必須多加上(void**)在&pNewData前才能過,
變像這樣: traverse(pList, 0, (void**)&pNewData);
為什麼會這樣呢?
又在哪些情況要自己加上(void*)型態轉換呢?
謝謝各位先進解答!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.144.18
→
08/18 12:03, , 1F
08/18 12:03, 1F
→
08/18 12:04, , 2F
08/18 12:04, 2F
→
08/18 12:05, , 3F
08/18 12:05, 3F
推
08/18 12:29, , 4F
08/18 12:29, 4F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章