2017-08-13 47 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

转换不是显式的,而是隐式的,从函数指针到整数。 –

相关问题