|
藍森林 http://www.lslnet.com 2006年6月6日 10:18
malloc 的返回值, 不需要 cast
(type *)malloc (...) 是經典的寫法,我以前還看過這裡有一個貼子討論如何把 malloc 的返回值 cast 成複雜的類型。在這裡我想說的是, 在新標準下, malloc 的返回值是無需 cast 的。
一些舊的編譯系統中, malloc 返回的類型為 char *, 所以要cast 成合適的類型,但現在 malloc 都返回 void *, 這樣就無須 cast 了。
有些朋友說不 cast 會有警告,其實是沒有包含 <stdlib.h>; 的緣故, stdlib.h 中給出了函數 malloc 的原型,如果不包含它,編譯器會假定 malloc 返回 int, 所以產生警告。
函數在在默認的情況下全局可見,無需要聲明也可以引用,但返回值被假定為 int. |
| |