2017-08-13 65 views
-3

下面的代碼輸出×,因爲某些原因:爲什麼'的main(){的putchar(&main);}`輸出`×`

int main() { 
    putchar(&main); 
} 

爲什麼會發生這種情況

+4

什你還期望什麼? –

+1

@KerrekSB可能類似'Segmentation fault(核心轉儲)' – Pavel

+2

C中沒有任何東西可以保證分段錯誤。 (即使有,這也是一個相當不合理的期望,'putchar'需要一個字符,它不能解引用,因此不能訪問任何東西。) –

回答

1

main是一個功能? &main是可以被鑄造爲整數類型的函數的地址。

putchar只是把該字符到stdout。

+0

雖然代碼實際上並沒有將它轉換爲整數類型。我不知道你爲什麼提到字符類型(參數putchar是'int') –

+0

我很抱歉提到字符類型。我將編輯答案。 –

+1

轉換不是顯式的,而是隱式的,從函數指針到整數。 –

相關問題