Avatar ·

الفرق بين 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` على يسار النجمة يحمي البيانات، وعلى اليمين يحمي المؤشر نفسه؟ أم هناك قاعدة أبسط للحفظ؟ اشرحوا لي من فضلكم كيف يعمل هذا وفي أي الحالات يُستخدم أي خيار. شكراً مقدماً! <<>>

كيفية قراءة