小编Okd*_*Okd的帖子

关于在 C++ 中初始化指针

我一直在阅读 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++ …

c++ pointers

15
推荐指数
2
解决办法
1188
查看次数

标签 统计

c++ ×1

pointers ×1