c++ - 为什么我不能像这样: int *p = 6;?直接给int指针赋值

标签 c++ c pointers initialization variable-assignment

错误:从“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/

相关文章:

c++ - 使用带有 vector : 'std::vector' default constructor error 的自定义类

c++ - 使用 Visual C++ 2010 编译器在 code::block 中使用 widgets 库时,发生错误

c - 函数有 malloc 语法错误?

c - 无论我做什么,snprintf() 都会给我一个段错误

c - 缓冲区的指针与双指针

c++ - 为 C++ 程序编写 BNFC 语法

c++ - 有效的字符数组(这是一个有效的字符串)

c - 在开始使用方法进行 C 编程时

c++ - 在 void 指针指向的内存中创建一个对象

c - 通过子叉内的指针增加变量值