我相信在下面的代码中,C"自动转换为17 int *
",正如有人最近指出的那样(但没有说明原因),这是错误的.
int *ptoi = 17; // I assumed that 17 is being automatically casted to int *
Run Code Online (Sandbox Code Playgroud)
我知道如果我在C++中做同样的事情,我会收到一个错误invalid conversion from int to int *
.但是,如果我在C++中执行以下操作,它可以正常工作:
int *ptoi = (int *)17;
Run Code Online (Sandbox Code Playgroud)
这些是我认为在C中,铸造是隐含的原因.
有人可以解释为什么,在C++中,我必须使用它,但在C中,它工作正常吗?