以下代码在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工作正常而其他数字不起作用?
答案 0 :(得分:6)
因为您无法在C ++中隐式地从int
转换为int*
,但是由于历史原因,0可以,因为它通常用作NULL
的值。 / p>
如果要在C ++中执行此操作,则需要将数字显式转换为指针:
int *ptr = reinterpret_cast<int*>(25);