Avatar ·

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

Hallo zusammen! Ich habe gerade angefangen, C++ zu lernen, und komme mit dem Schlüsselwort `const` im Kontext von Zeigern nicht klar. Ich sehe mir drei verschiedene Deklarationen an und bin völlig verwirrt:\n\n1. `const int* ptr;`\n2. `int* const ptr;`\n3. `const int* const ptr;`\n\nWarum bedeuten sie unterschiedliche Dinge? Welcher von ihnen erlaubt es, den Wert zu ändern, auf den der Zeiger zeigt, und welcher den Zeiger selbst? Ich habe ein kleines Beispiel geschrieben:\n\n```cpp\nint a = 10;\nint b = 20;\n\nconst int* p1 = &a;\n// *p1 = 30; // Fehler, wenn auskommentiert\np1 = &b; // funktioniert\n\nint* const p2 = &a;\n*p2 = 30; // funktioniert\n// p2 = &b; // Fehler, wenn auskommentiert\n\nconst int* const p3 = &a;\n// *p3 = 30; // Fehler\n// p3 = &b; // Fehler\n```\n\nVerstehe ich richtig, dass `const` links vom Sternchen die Daten schützt und rechts davon den Zeiger selbst?