[問題] malloc的問題

看板C_and_CPP (C/C++)作者 (^銀術^)時間15年前 (2010/12/24 14:32), 編輯推噓1(1010)
留言11則, 5人參與, 最新討論串1/4 (看更多)
我的程式碼: #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

12/24 14:46, , 1F
強制型別轉換
12/24 14:46, 1F

12/24 14:47, , 2F
newPtr = (ListNodePtr)malloc(sizeof(ListNode));
12/24 14:47, 2F

12/24 14:48, , 3F
不過其實你應該用 new 比較好
12/24 14:48, 3F

12/24 14:59, , 4F
感謝u大 new的話是直接 newPtr = new LostNode;嗎?
12/24 14:59, 4F

12/24 17:43, , 5F
剛剛又進行測試 原來上面的寫法檔名要用.c才可以
12/24 17:43, 5F

12/24 17:45, , 6F
.cpp 不會把malloc回傳的指標自動轉換 所以要強制轉換
12/24 17:45, 6F

12/24 21:46, , 7F
最好是用new比較好, 又不是要建構什麼物件, new回傳的
12/24 21:46, 7F

12/24 21:47, , 8F
是不同型別的指標, malloc只能回傳void*, 需不需要強
12/24 21:47, 8F

12/24 21:47, , 9F
制轉型差別就在這
12/24 21:47, 9F

12/25 08:48, , 10F
印象中只有C才能不用強制轉型, C++會不給過
12/25 08:48, 10F

12/25 08:48, , 11F
不過寫 C++ 我都用 new 所以沒這個問題
12/25 08:48, 11F
文章代碼(AID): #1D53vijW (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1D53vijW (C_and_CPP)