Re: [語法] malloc(sizeof (int))怎使用

看板C_and_CPP (C/C++)作者 (4545454554)時間14年前 (2011/07/27 11:09), 編輯推噓3(308)
留言11則, 8人參與, 最新討論串2/2 (看更多)
※ 引述《uClinux (謬C_linux)》之銘言: : 第一次發文 : 新手請見諒 : 學校老師 恩.......... : 可能是level不同,所以他講得基本上有說跟沒說一樣 : 以前沒用過這個指令(?) : 只知道他是什麼動態配置記憶體 : 希望板上的高手能替我解說一下 : 阿這一串指令 (int*)malloc(sizeof(int)) : 要放在哪? : 什麼時候可以用? : 歹勢 因為真得很弱,所以問題可以覺得很好笑 = = : 先謝謝了 各位好 借題一問 http://pydoing.blogspot.com/2010/07/c-malloc.html http://caterpillar.onlyfun.net/Gossip/CGossip/MallocFree.html 如上兩個有關malloc的範例 裡面是這樣寫 第一個link程式片段 int *nPtr; nPtr = malloc(sizeof(int)); ---------------------------------- 第二個link程式片段 int *ptr = malloc(sizeof(int)); 這兩個範例在malloc前面都沒有(int*) 我試著編譯都有error 加上(int*)後就沒error了 我的問題不是為何malloc前面需要(int*) 而是這兩個範例為何沒有加上(int*)? 是因為用的編譯軟體不同的關係 所以他們少了(int*)編譯一樣會過嗎? THX -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.129.3.206

07/27 11:17, , 1F
.c 會過 .cpp 不過
07/27 11:17, 1F

07/27 11:56, , 2F
謝謝 所以編輯上加了型態比較保險 是嗎?
07/27 11:56, 2F

07/27 12:03, , 3F
"不同語言" 對 void* 的轉型要求不一樣
07/27 12:03, 3F

07/27 12:20, , 4F
記得沒錯的話 malloc是回傳void*, 所以需要自行轉型
07/27 12:20, 4F

07/27 12:23, , 5F
至於你要問的問題就要看那編譯器底層的實做是如何了~
07/27 12:23, 5F

07/27 12:23, , 6F
C可以隱式把void *轉成其他型態指標,但C++要顯示轉型
07/27 12:23, 6F

07/27 14:11, , 7F
C裡 void* 可以自動轉成 任何一種 pointer, C++ 要強制轉型
07/27 14:11, 7F

07/27 23:55, , 8F
感謝各位解答
07/27 23:55, 8F

07/28 02:54, , 9F
如果需要初始化 calloc 也不錯用
07/28 02:54, 9F

07/28 03:34, , 10F
C++ 某種程度上比較鼓勵你用 new/delete 而他們不需要這種
07/28 03:34, 10F

07/28 03:35, , 11F
指標轉型(注意 new 和 malloc 兩套系統不能混用)
07/28 03:35, 11F
文章代碼(AID): #1EBu5etB (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1EBu5etB (C_and_CPP)