2017-08-13 8 views
-3

次のコードを出力×、main()の`来る:はどのようにいくつかの理由で、{のputchar(&main);} `出力`× `

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

これはなぜ起こるのでしょ

+4

義和それ以外は期待しましたか? –

+1

@KerrekSBは、おそらくセグメンテーションフォールト 'のようなもの(コアダンプ)'セグメンテーションフォールトを保証Cには何も – Pavel

+2

ありません。 (あったとしても、それはむしろ不合理な期待だろう '文字を取るputchar'それが故に逆参照、アクセス、何もしません。。。) –

答えて

1

mainが関数であります?。 &mainは整数型にキャストすることができます関数のアドレスです。

putchar単にstdoutにその文字を置きます。

+0

コードは実際に整数型にキャストしません。そして、なぜあなたがchar型(putcharへのパラメータは 'int')を記述したのか分かりません。 –

+0

char型については申し訳ありません。私は答えを編集します。 –

+1

キャストは関数ポインタから整数に、明示はなく、暗黙的なものではありません。 –

関連する問題