assignment to 'int *' from 'int' makes pointer from integer without a cast [-Wint-conversion]gcc
时间: 2024-11-09 10:21:38 浏览: 13
DIP-Assignment-No.-4.rar_assignment_assignment-4
这个警告 "assignment to 'int *' from 'int' makes pointer from integer without a cast [-Wint-conversion]" 出自 GCC 编译器,意味着你在 C 或 C++ 中尝试将一个整数赋值给一个 `int *` 类型的指针,但未显式地进行类型转换(cast)。在 C/C++ 中,这样做通常是不允许的,除非你知道你的确需要将一个整数当作地址来处理。
例如:
```c
int num = 42;
int *ptr; // 定义一个整数指针
ptr = num; // 这里不会编译,因为 num 是一个整数值而不是地址
```
上述代码会报错,因为你直接把整数值 `num` 赋给了指针 `ptr`,没有进行类型转换。正确的做法应该是:
```c
int num = 42;
int *ptr = # // 使用取址运算符 & 将 num 的地址赋给 ptr
```
或者,在 C++11 及以后版本中,可以直接将 `int` 映射为 `int *`:
```cpp
int num = 42;
int *ptr = # // C++ 中无须额外转换
```
如果真的想忽略这个警告并继续执行,可以加上 `static_cast<int*>(num)` 进行强制类型转换,但这通常不是最佳实践。
阅读全文