int null = 0;
int *p = null;
它给了我一个错误:无法初始化类型的变量“诠释*”类型“诠释”的左值。
在C它会工作。
编辑:
我怎样才能使它在这种精神的工作?
这是从入门C++的书的练习(2.32):
是下面的代码合法与否?如果没有,你怎么可能 使它合法?
int null = 0, *p = null;
int null = 0;
int *p = null;
它给了我一个错误:无法初始化类型的变量“诠释*”类型“诠释”的左值。
在C它会工作。
编辑:
我怎样才能使它在这种精神的工作?
这是从入门C++的书的练习(2.32):
是下面的代码合法与否?如果没有,你怎么可能 使它合法?
int null = 0, *p = null;
如果您正在使用C++ 11然后使用nullptr
:如果你不使用C++ 11
int *p = nullptr;
然后使用NULL
代替:
int *p = NULL;
因为C/C++已经有了它自己的一个,所以不要定义你自己的null
值。 NULL
没有类型,它被简单地定义为0
,和文字0
整数可以分配到一个指针:
int *p = 0;
你应该在C++ 11使用nullptr
。 C++不会自动转换int和x *(其中x是type),因此使用int
类型变量来定义null将不起作用。在C++ 11之前,您可以使用积分文字,如0
。 (您仍然可以使用积分常数的新标准后,但也有很好的理由使用nullptr
超过NULL
What are the advantages of using nullptr?)
你可以阅读更多关于它nullptr
这里:http://en.cppreference.com/w/cpp/language/nullptr。
我怎样才能使上述工作,因为它没有nullptr?我是C++新手。 – gon1332
如果您使用C++ 11,则使用'nullptr':'int * p = nullptr;'。如果你没有使用C++ 11,那么使用'NULL'代替:'int * p = NULL;'。不要定义你自己的'null'值,C/C++已经有一个。 'NULL'没有类型,它被简单地定义为'0',并且一个整型立即数'0'可以被分配给一个指针:'int * p = 0;' –
我现在正在学习C++,并且我读了Primer C++。这是一个excersise(2.32)。您提出的解决方案是首先出现的解决方案。我想知道是否会有其他能够完成这项工作的东西,仅仅是为了玩C++的经验。 – gon1332
,我认为你只是缺少强制。 –
为什么要这样?它们不是同一类型。如果你真的想这样做,你需要一个演员阵容。 – Rup
[将int转换为指针](https://stackoverflow.com/questions/9212219/converting-int-to-pointer)可能重复。 – acomar