相关疑难解决方法(0)

为什么我可以隐式地将int文字转换为C中的int*而不是C++中的int*?

我相信在下面的代码中,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中,它工作正常吗?

c c++ pointers casting

25
推荐指数
1
解决办法
4504
查看次数

标签 统计

c ×1

c++ ×1

casting ×1

pointers ×1