编译器不知道所指对象的大小。在作运算之前, 把指针转化为 char * 或你准备操作的其它指针类型, 但是请参考问题: 在 C 语言中, 类型转换意味着 ``把这些二进制位看作另一种类型, 并作相应 的对待"; 这是一个转换操作符, 根据定义它只能生成一个右值 (rvalue)。而 右值既不能赋值, 也不能用 ++ 自增。(如果编译器支持这样的扩展, 那要么是一个错误, 要么是有意作出的非标准扩展。) 要达到你的目的可以用: p = (char *)((int *)p + 1); 或者,因为 p 是 char * 型, 直接用 p += sizeof(int); 但是, 在可能的情况下, 你还是应该首先选择适当的指针类型, 而不是一味地 试图李代桃僵。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。