الفرق بين const int* و const int * const و int * const في لغة C++
مرحبًا! بدأت للتو في تعلم لغة C++ وأحاول فهم المؤشرات والمُعدِّل const. قرأت عدة مقالات، لكني ما زلت مرتبكًا بشأن هذه البنيات الثلاث: `const int*` و `int * const` و `const int * const`.
على سبيل المثال، كتبت هذا الكود:
```cpp
int value = 5;
const int* ptr1 = &value;
int * const ptr2 = &value;
const int * const ptr3 = &value;
```
أفهم أن جميعها مرتبطة بطريقة ما بعدم القدرة على تغيير البيانات أو المؤشر نفسه، لكن لا أستطيع صياغة الفرق بوضوح. عندما أحاول تعيين قيمة جديدة عبر `*ptr1 = 10;`، يشتكي المترجم. وإذا حاولت تغيير `ptr2`، مثلاً `ptr2 = &otherValue;`، يحدث خطأ أيضًا. لكن يمكنني إعادة توجيه `ptr1` إلى متغير آخر، بينما لا يمكنني ذلك مع `ptr2`. لماذا؟
أيضًا، أريد أن أفهم في أي الحالات يُستخدم كل خيار. هل هناك قاعدة ذهنية للحفظ؟ سأكون ممتنًا لشرح مفصل مع أمثلة.
<<>>