Ich hab das jetzt mit dem VC (microsoft visual studio 2005) durchprobiert. Das sollte eigentlich schon auf GCC übertragbar sein.

Vorweg:
Code:
int*  p = (char*)1000;           // geht garnicht, verständlich, ist ja auch ein widerspruch
Klammervarianten:
Code:
int*    p  = (int*)1000;
Code:

         (char*)p++;              // kennen wir schon, liefert p+4
         (int)p++;                   // ebenfalls
       p = (int*)(int)p++;      // ebenfalls

      ((char*)p)++;          // Mag er garnicht ==>    error C2105: '++' needs l-value
                                  



Was geht ? (definitiv getestet)
Code:
int    tmp = (int)p;
   p = (int*)++temp;              
Code:
union { int* p;  int iP; } un;
      un.p = (int*)1000;
      un.iP++ ;     // (durch die union wird auch   int*p  mit-incrementiert


und die grausliche Variante
Code:
     p = (int*)((int)p + 1);



Wie gesagt: getestet