الفرق بين const int* و int * const و const int * const في C++
مرحباً بالجميع! لقد بدأت للتو في تعلم لغة C++ ولا أستطيع فهم الكلمة المفتاحية `const` في سياق المؤشرات. أنظر إلى ثلاثة تصريحات مختلفة وأحتار تماماً:
1. `const int* ptr;`
2. `int* const ptr;`
3. `const int* const ptr;`
لماذا تعني أشياء مختلفة؟ أي منها يسمح بتغيير القيمة التي يشير إليها المؤشر، وأيها يسمح بتغيير المؤشر نفسه؟ كتبت مثالاً صغيراً:
```cpp
int a = 10;
int b = 20;
const int* p1 = &a;
// *p1 = 30; // خطأ إذا أزلت التعليق
p1 = &b; // يعمل
int* const p2 = &a;
*p2 = 30; // يعمل
// p2 = &b; // خطأ إذا أزلت التعليق
const int* const p3 = &a;
// *p3 = 30; // خطأ
// p3 = &b; // خطأ
```
هل فهمي صحيح بأن `const` على يسار النجمة يحمي البيانات، وعلى اليمين يحمي المؤشر نفسه؟ أم هناك قاعدة أبسط للحفظ؟ اشرحوا لي من فضلكم كيف يعمل هذا وفي أي الحالات يُستخدم أي خيار. شكراً مقدماً!
<<>>