我一直在阅读 C++ Primer 第 5 版。它提到
将 int 变量分配给指针是非法的,即使该变量的值恰好为 0。
我试了一下,结果如下:
int *u = 0; // success
int *w = 123; // fail
/* compile error:
ptr_test.cc:9:12: error: invalid conversion from 'int' to 'int*' [-fpermissive]
int *w = 123;
*/
int zero = 0;
int *v = zero; // fail
/* compile error
ptr_test.cc:9:12: error: invalid conversion from 'int' to 'int*' [-fpermissive]
int *w = zero;
*/
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解释一下指针初始化的确切规则吗?为什么将 int 指针分配给 0 可以,但 123 不行,尽管它们都是整数?为什么 123 会导致转换为“*int”,而 0 不会?
顺便说一句,我使用的是 g++ …