开发者社区> 问答> 正文

为什么我不能对 void* 指针进行运算?

为什么我不能对 void* 指针进行运算?

展开
收起
游客py5kcp7dd6tu6 2022-03-29 23:00:18 669 0
1 条回答
写回答
取消 提交回答
  • 编译器不知道所指对象的大小。在作运算之前, 把指针转化为 char * 或你准备操作的其它指针类型, 但是请参考问题: 在 C 语言中, 类型转换意味着 ``把这些二进制位看作另一种类型, 并作相应 的对待"; 这是一个转换操作符, 根据定义它只能生成一个右值 (rvalue)。而 右值既不能赋值, 也不能用 ++ 自增。(如果编译器支持这样的扩展, 那要么是一个错误, 要么是有意作出的非标准扩展。) 要达到你的目的可以用: p = (char *)((int *)p + 1); 或者,因为 p 是 char * 型, 直接用 p += sizeof(int); 但是, 在可能的情况下, 你还是应该首先选择适当的指针类型, 而不是一味地 试图李代桃僵。

    2022-03-29 23:01:07
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载