为什么我不能在 C++ 中为整数指针分配整数值?
Why can't I assign an integer value to an integer pointer in C++?
我的代码是
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的正确标识符。这是因为一个好的标识符不应该以符号开头,而应该以字母开头。
相关文章:
- 为什么在将 void 指针转换为整数指针时出现分段错误
- 整数指针数组的元素是否可以指向整数数组?
- 整数指针与字符指针的情况下悬空指针
- 整数指针数组的大小
- 使用整数指针将左值转换为右值
- 打印整数指针元素时的结果不同
- 将空间分配给整数指针时出错
- 异常包括字符指针和整数指针
- 我可以在 c++ 中使用整数指针调用类的成员函数吗?
- 为什么我们不能使用整数指针声明一个数字数组
- 当我们在 c++ 中将常量整数引用分配给整数指针时,行为是什么
- 为什么允许常量整数指针指向非常量整数
- 在C++中为整数指针编制索引
- 创建字符指针和整数指针数组
- 指向整数指针的 C++ 指针
- 字符结果和整数指针之间的差异
- 删除整数指针时析构函数末尾的分段错误
- 是否可以将整数指针转换为位于该内存位置的实际整数
- 将树的每个节点替换为节点左侧所有值的和,而不使用额外的整数指针参数
- 我允许传递一个整数指针到一个函数,在c++中接受一个整数数组作为参数