2011-03-27 44 views

回答

2

從歷史上看,對於C語言系列的語言(語法上),void指示沒有從函數返回的類型。

更確切地說,就像變量具有(或屬於)給定類型一樣,函數也具有類型。例如,返回int的函數,它是一個int類型函數,或者一個函數,其類型爲int。相同的,如果它返回別的東西。

如果函數沒有返回任何東西 - 它什麼都不返回 - 它屬於什麼類型?它沒有類型,而類型代表了這樣的事物。

我不是在目標C精通,但如果我理解正確的話,零是無類型 ID(或任何類型的ID),幾乎像一個內置的實施null pattern的。

而且是(void *的)型,後者是一個無類型指針可以指向任何東西,只是因爲它會在C和C++。

所以返回nil的函數意味着它的類型是任何類型的id。不知道這是否有道理。因此,那麼(nil)myFunction(void)myFunction完全不同,因爲前者有一種類型(任何類型?),而後者根本沒有類型。

此外,nil是一個內置常量。返回nill就像說你的函數返回一個特定的數字((1)myFunction)。這沒有任何意義,是嗎?

+0

感謝您的詳細解答。我一直認爲「無效」意味着「無」,就像「無」或「無效」。但我可以看到,我忽略了「無」是一種價值而不是一種類型的事實。這一切都有道理AHHHHHHHH !!!! – pop850 2011-03-27 17:12:28

6

void不算什麼。 nil是(0)。

換句話說,返回nil與返回任何東西都不一樣。

+0

...並且你不能使用一個值作爲數據類型,所以不可能聲明某種方法返回'nil'。事實上,'nil'本身(概念上至少)是一個'id'類型的值,所以爲了從方法中返回'nil',該方法的返回類型必須是'id',而不是'void'。 – jlehr 2011-03-27 18:30:35

0

Void是一種對象類型。虛空意味着沒有返回值。
無是一個對象,而不是一個類型。它代表一個空值。

相關問題