定义一个char *P;现在想让P的地址增加4.
((int *)P)++;
P = (char *)(((int *)P)+1);
为什么第一种没增加,第二种可以
照搬了一个,顺便也学习下:
在C语言中,类型转换操作符并不意味着"把这些二进制位看作另一种类型,并作相应的处理"。这是一个转换操作符,根据定义它只能生成一个右值(rvalue)。而右值既不能赋值,也不能用++自增。(如果编译器接受这样的表达式,那要么是一个错误,要么是有意作出的非标准扩展。)
http://book.51cto.com/art/200901/106852.htm