Erstens hat der Operator ++ Vorrang vor dem Operator *, und die Operatoren () haben Vorrang vor allem anderen.
Zweitens ist der ++ - Zahlenoperator der gleiche wie der Zahl ++ - Operator, wenn Sie sie nichts zuweisen. Der Unterschied besteht darin, dass Zahl ++ die Zahl zurückgibt und dann die Zahl erhöht, und die Zahl ++ zuerst erhöht und dann zurückgibt.
Drittens erhöhen Sie den Wert eines Zeigers, indem Sie ihn um die Größe seines Inhalts erhöhen, dh, Sie erhöhen ihn, als würden Sie in einem Array iterieren.
Um es zusammenzufassen:
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 of ptr is incremented
++(*ptr); // The value of ptr is incremented
++*(ptr); // The value of 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 of 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
Da es hier viele Fälle gibt, habe ich möglicherweise einen Fehler gemacht. Bitte korrigieren Sie mich, wenn ich falsch liege.
BEARBEITEN:
Ich habe mich also geirrt, der Vorrang ist etwas komplizierter als das, was ich geschrieben habe. Sehen Sie ihn hier an:
http://en.cppreference.com/w/cpp/language/operator_precedence