错误:从“int”到“int*”的无效转换
int *q = 8;
工作正常。
*q = 6;
为什么我不能像这样直接将一个 int 赋值给一个 int 指针:int *q = 6
;我可以在下一行安全地分配它吗?
最佳答案
因为它们完全不同。第一个是带有初始化表达式的变量定义,即 initialization (指针本身):
int * q = 8;
~~~~~ ~ ~~~
type is int*; name of variable is q; initialized with 8
第二个是赋值(指针指向的对象):
*q = 6;
~~ ~~~
dereference on q via operator*; assign the resulting lvalue pointed by q to 6
并且,int *p = 6;
表示定义一个名为 p
的变量,类型为 int*
并用 6 初始化它
,失败是因为 6
不能直接用于初始化指针(即错误“从‘int’到‘int*’的无效转换”)。
关于c++ - 为什么我不能像这样: int *p = 6;?直接给int指针赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44966943/