适用于C语言,但不适用于C ++语言

时间:2017-08-03 19:28:54

标签: c++ c

以下代码在C中编译,但在C ++中编译:

int *ptr = 25; //why not in C++?

错误

prog.cpp: In function ‘int main()’:
prog.cpp:6:11: error: invalid conversion from ‘int’ to ‘int*’ [-fpermissive]
  int *ptr = 25;

但这可以在C和C ++中编译:

int *ptr = 0;  //compiles in both

为什么分配0工作正常而其他数字不起作用?

1 个答案:

答案 0 :(得分:6)

因为您无法在C ++中隐式地从int转换为int*,但是由于历史原因,0可以,因为它通常用作NULL的值。 / p>

如果要在C ++中执行此操作,则需要将数字显式转换为指针:

int *ptr = reinterpret_cast<int*>(25);