Avatar ·

Unterschied zwischen const int*, const int * const und int * const in C++

Hallo! Ich habe gerade angefangen, C++ zu lernen, und versuche, Zeiger und den const-Qualifier zu verstehen. Ich habe mehrere Artikel gelesen, aber ich bin immer noch verwirrt über diese drei Konstruktionen: `const int*`, `int * const` und `const int * const`. \n\nZum Beispiel habe ich diesen Code geschrieben:\n\n```cpp\nint value = 5;\nconst int* ptr1 = &value;\nint * const ptr2 = &value;\nconst int * const ptr3 = &value;\n```\n\nIch verstehe, dass sie alle irgendwie damit zusammenhängen, dass die Daten oder der Zeiger selbst nicht geändert werden können, aber ich kann den Unterschied nicht klar formulieren. Wenn ich versuche, einen neuen Wert über `*ptr1 = 10;` zuzuweisen, beschwert sich der Compiler. Und wenn ich versuche, `ptr2` zu ändern, z.B. `ptr2 = &otherValue;`, gibt es auch einen Fehler. Aber `ptr1` kann ich auf eine andere Variable umleiten, `ptr2` jedoch nicht. Warum? \n\nIch möchte auch verstehen, in welchen Fällen welche Variante verwendet wird.