推 LPH66:我覺得是回傳型態寫錯了...這個回傳型態應該要是 void** 11/01 01:11
→ shemale:同樓上。原po指標觀念仍不夠清楚,試試畫圖 11/01 08:10
→ azureblaze:另外void*可以吃大部分的指標,包括void** 11/01 11:11
如果不論配置的過程,從我的角度回傳 void * 並不算錯。
主要原因是這應該是 C,在 C 語言裡面 void * 的主要用途就是泛用型指標
而 void ** 卻不是
[以下以 gcc 為編譯器]
例如:
void *p;
int **x = p;
在 C 裡面沒有 warning 也沒有 error
在 C++ 裡面是 error
相對而言:
void **p;
int **x = p;
在 C 裡面是 warning
在 C++ 裡面還是 error
這主要反應了 C 標準與編譯器是可允許 void * 隱性轉型成其他型態指標
但非 void * 指標 (例如 void **) 的轉換採取的是 warning
C++ 編譯器則強迫你需要做顯性轉型,否則一律是 error
就這個例子,在 C 裡面你要傳遞一個一定要被轉成其他型態指標的指標時,
個人認為應該是用 void * 比較合宜
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.29.148
推 winken2004:感謝 11/01 15:55