3. Tengo un puntero a carácter (char *) que necesito
que apunte a entero en algunas ocasiones, y necesito incrementarlo.¿Por
qué no hace?
((int *)p)++;
En
C++, un operador de casting no significa "imagina que estos
bits tienen un tipo diferente y tratalos de acuerdo a este nuevo
tipo ".
Es
un operador de conversión, y por definición esto
devuelve un valor, que no puede ser asignado o incrementado con
++.
Para
implementar lo que tu quieres utiliza:
p
= (char *)((int *)p + 1);
o
dado que p es un char, simplemente:
p
+= sizeof(int);
Siempre que sea posible, deberías escoger el tipo de puntero
apropiado, en lugar de intentar tratarlo como de otro tipo.