问题:
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。
为什么如下的代码((int *)p)++; 不行?
在C语言中,
类型转换意味着“把这些二进制位看作另一种类型,
并作相应的对待”;
这是一个转换操作符,
根据定义它只能生成一个右值(rvalue)。
而右值既不能赋值, 也不能用++ 自增。
(如果编译器支持这样的扩展, 那要么是一个错误, 要么是有意作出的非标准扩展。)
要达到你的目的可以用:
p = (char *)((int *)p + 1);
或者,
因为p 是char * 型,
直接用 p += sizeof(int);
但是,
在可能的情况下,
你还是应该首先选择适当的指针类型,
而不是一味地试图李代桃僵。