warning: pointer of type ‘void *’ used in arithmetic [-Wpointer-arith] 如何解决!!!

这个编译器警告通常是因为您在进行指针运算时使用了`void*`类型的指针。C++中的指针算术运算需要知道指针指向的对象的大小,以便计算其偏移量。但是,`void*`类型的指针没有指向任何特定类型的对象,因此编译器无法确定应该使用哪种大小进行偏移量计算,从而导致警告。

为了解决这个问题,您可以将指针类型转换为一个已知的类型,例如`char*`或`int*`,这样编译器就可以知道每个偏移量的大小。如果您必须使用`void*`指针进行算术运算,则可以将其转换为一个已知的类型后再进行运算,例如:

```cpp
void* ptr = // 指向某个对象的 void* 指针
int offset = 10;
int* intPtr = static_cast<int*>(ptr);
intPtr += offset; // 现在可以进行指针运算了
```

请注意,这种转换是一种危险的做法,因为`void*`指针可以指向任何类型的对象,所以您需要确保转换后的指针指向的确实是您期望的类型。另外,如果您使用的是C++11或更高版本,则可以考虑使用`std::intptr_t`类型来保存指针的整数表示,以便在需要时进行指针算术运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃饼干的熊猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值