为什么我不能在 C++ 中为整数指针分配整数值?

Why can't I assign an integer value to an integer pointer in C++?

本文关键字:整数 指针 分配 不能 C++ 为什么      更新时间:2023-10-16

我的代码是

int null = 0;
int *p = null;

它给了我一个错误:无法用类型为"int"的左值初始化类型为"int*"的变量。

在C中它会起作用。

编辑:

我如何才能在这种精神下工作?

它来自初级C++书中的一个练习(2.32):

以下代码是否合法?如果没有,你怎么可能让它合法化

int null = 0, *p = null;

如果使用C++11,则使用nullptr:

int *p = nullptr;

如果您不使用C++11,则使用NULL

int *p = NULL;

根本不要定义自己的null值,因为C/C++已经有了自己的值。NULL没有类型,它被简单地定义为0,并且整数文本0可以被分配给指针:

int *p = 0;

int *p = null;更改为int *p = (int*)null;

您应该在C++11中使用nullptr。C++不会在int和x*(其中x是类型)之间进行自动转换,因此使用int类型的变量来定义null是行不通的。在C++11之前的版本中,可以使用整型文字,如0。(在新标准之后,您仍然可以使用积分常数,但使用nullptr而不是NULL有充分的理由。使用nullptr有什么优点?)

您可以在此处阅读有关nullptr的更多信息:http://en.cppreference.com/w/cpp/language/nullptr.

我认为*p不是C的正确标识符。这是因为一个好的标识符不应该以符号开头,而应该以字母开头。