2013-11-04 91 views
0

C中的return NULLreturn 0之間的區別是什麼?返回值NULL和零差值

是的,我知道0是一個數字,NULL是無效的。但我不明白這兩者在編程方面的目的。

另外我相信return 0不會返回號碼0爲調用函數,但返回void。那麼,如果說明return NULLreturn 0被互換,它會有什麼不同?

+4

NULL是* not * a'void'。虛空沒有價值,它不存在! –

+4

http://stackoverflow.com/questions/1296843/what-is-the-difference-between-null-0-and-0?rq=1 –

+1

void它是一種類型。空值是一個有效的空值指針 –

回答

0

在C

#define NULL ((void*) 0) 

這意味着NULLvoid*類型(無類型的指針)的。並且它的值爲0.

將0或NULL分配給指針變量沒有區別。 NULL可能更具可讀性。

請參見:http://c-faq.com/null/macro.html

當您返回零,你真的回零。如果函數簽名將void指定爲返回值,則表示該函數不返回值。在其他一些語言中,這被稱爲「程序」。

+0

大多數情況下(但並非總是),請參閱相同FAQ的[問題5.17](http://c-faq.com/null/machexamp.html),另請參閱:[什麼時候NULL宏不是0?](http: //stackoverflow.com/q/2597142/1606345) –

+0

完全正確。規則有一些深奧的例外。 – teroi