看板 C_and_CPP 關於我們 聯絡資訊
我的程式碼: #include <cstdlib> #include <iostream> struct ListNode{ char data; struct ListNode *nextPtr; }; typedef ListNode *ListNodePtr; 然後我在下面的funtion裡面用到 void insert(ListNodePtr *sPtr,int value) { ListNodePtr newPtr; (略) newPtr = malloc(sizeof(ListNode)); } 可是編譯的時候編譯器都不給過 顯示訊息說malloc那行有錯:invalid conversion from `void*' to `ListNode*' 想請問問題是出在哪邊? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.201.106
ericinttu:強制型別轉換 12/24 14:46
uranusjr:newPtr = (ListNodePtr)malloc(sizeof(ListNode)); 12/24 14:47
uranusjr:不過其實你應該用 new 比較好 12/24 14:48
silver8144:感謝u大 new的話是直接 newPtr = new LostNode;嗎? 12/24 14:59
silver8144:剛剛又進行測試 原來上面的寫法檔名要用.c才可以 12/24 17:43
silver8144:.cpp 不會把malloc回傳的指標自動轉換 所以要強制轉換 12/24 17:45
loveme00835:最好是用new比較好, 又不是要建構什麼物件, new回傳的 12/24 21:46
loveme00835:是不同型別的指標, malloc只能回傳void*, 需不需要強 12/24 21:47
loveme00835:制轉型差別就在這 12/24 21:47
xatier:印象中只有C才能不用強制轉型, C++會不給過 12/25 08:48
xatier:不過寫 C++ 我都用 new 所以沒這個問題 12/25 08:48