Tout d'abord, l'opérateur ++ est prioritaire sur l'opérateur *, et les opérateurs () sont prioritaires sur tout le reste.
Deuxièmement, l'opérateur ++nombre est le même que l'opérateur ++nombre si vous ne les affectez à rien. La différence est que number++ renvoie le nombre et l'incrémente ensuite, tandis que ++number incrémente d'abord le nombre et le renvoie ensuite.
Troisièmement, en augmentant la valeur d'un pointeur, vous l'incrémentez de la taille de son contenu, c'est-à-dire que vous l'incrémentez comme si vous itériez dans un tableau.
Donc, pour résumer :
ptr++; // Pointer moves to the next int position (as if it was an array)
++ptr; // Pointer moves to the next int position (as if it was an array)
++*ptr; // The value pointed at by ptr is incremented
++(*ptr); // The value pointed at by ptr is incremented
++*(ptr); // The value pointed at by ptr is incremented
*ptr++; // Pointer moves to the next int position (as if it was an array). But returns the old content
(*ptr)++; // The value pointed at by ptr is incremented
*(ptr)++; // Pointer moves to the next int position (as if it was an array). But returns the old content
*++ptr; // Pointer moves to the next int position, and then get's accessed, with your code, segfault
*(++ptr); // Pointer moves to the next int position, and then get's accessed, with your code, segfault
Comme il y a beaucoup de cas ici, il se peut que j'aie fait des erreurs, merci de me corriger si je me trompe.
EDIT :
J'avais donc tort, la jurisprudence est un peu plus compliquée que ce que j'ai écrit, voir ici : http://en.cppreference.com/w/cpp/language/operator_precedence