0Pricing
C++ Academy · درس

إلغاء إشارة المؤشر وحساب المؤشرات

اقرأ الذاكرة عبر المؤشرات، وتنقّل في المصفوفات باستخدام حساب المؤشرات.

إلغاء إشارة المؤشر وحساب المؤشرات درس مجاني في C++ Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C++ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C++ Academy 4 دروس في المجموع.

القراءة عبر مؤشر

يقرأ العامل الأحادي * القيمة التي يشير إليها المؤشر.

int x = 42;
int* p = &x;
std::cout << *p;   // 42

الكتابة عبر مؤشر

يمكنك أيضًا استخدام *p في الجانب الأيسر من عملية إسناد للكتابة إلى الهدف.

*p = 100;
std::cout << x;   // 100

عامل السهم

بالنسبة إلى المؤشرات إلى البنى أو الفئات، فإن p->member صياغة مختصرة لـ (*p).member. استخدم السهم — فهذا هو الأسلوب المتعارف عليه.

struct Point { int x, y; };
Point pt{3, 4};
Point* p = &pt;
std::cout << p->x;   // 3

أساسيات حساب المؤشرات

يمكنك جمع أعداد صحيحة إلى المؤشرات أو طرحها منها. وتتحرك النتيجة بخطوات بحجم العنصر — وليس بالبايتات.

int a[5] = {10, 20, 30, 40, 50};
int* p = a;        // points to a[0]
p = p + 2;         // now points to a[2]
std::cout << *p;   // 30

التنقل في مصفوفة

تحاكي حسابات المؤشرات الفهرسة. العبارتان a[i] و*(a + i) متطابقتان — وتعمل p[i] مع أي مؤشر.

int a[] = {1, 2, 3, 4};
int* p = a;
for (int i = 0; i < 4; ++i) {
    std::cout << *(p + i) << " ";
}

الفرق بين مؤشرين

يؤدي طرح مؤشرين داخل المصفوفة نفسها إلى الحصول على المسافة بين العنصرين — ونوعها هو std::ptrdiff_t.

int a[5];
int* first = a;
int* last  = a + 5;
std::ptrdiff_t len = last - first;  // 5

مقارنة المؤشرات

يمكنك مقارنة المؤشرات للتحقق من التساوي باستخدام == و!=، وترتيبها باستخدام < فقط عندما تشير إلى عناصر داخل المصفوفة نفسها.

التكرار باستخدام المؤشرات

يستخدم التكرار بأسلوب C المعتاد مؤشرين — مؤشر البداية ومؤشر النهاية.

int a[] = {1, 2, 3, 4, 5};
for (int* p = a; p != a + 5; ++p) {
    std::cout << *p << " ";
}

السماح بما بعد النهاية

يمكنك حساب مؤشر يشير إلى موضع واحد بعد العنصر الأخير (مؤشر "النهاية") — لكن إلغاء إشارته سلوك غير معرّف.

أخطاء حساب المؤشرات

الأخطاء الشائعة:

  • تجاوز حدود المصفوفة
  • خلط أنواع المؤشرات (int* + char*)
  • نسيان أن الحساب يتم بوحدات العناصر، لا بالبايتات

تفضيل المكررات أو النطاقات

تفضّل C++ الحديثة المكررات ومكتبة ranges على حسابات المؤشرات الخام. وتظل المؤشرات مهمة لواجهات برمجة التطبيقات في C وللشيفرة منخفضة المستوى جدًا.

اختبار سريع

إذا كان p من النوع int* ويشير إلى بداية عدد صحيح حجمه 4 بايتات، فعلامَ يشير p + 1؟

مراجعة

تقرأ *p الهدف أو تكتب إليه. وتصل p->member إلى عضو في بنية. تتحرك حسابات المؤشرات بخطوات بحجم العنصر. استخدمها بحذر — فالمكررات والنطاقات عادةً خيار أكثر أمانًا في الشيفرة الحديثة.

الأسئلة الشائعة

هل درس «إلغاء إشارة المؤشر وحساب المؤشرات» مجاني؟

نعم — نص درس «إلغاء إشارة المؤشر وحساب المؤشرات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C++ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C++ Academy 4 دروس في المجموع.

ماذا ستتعلم في «إلغاء إشارة المؤشر وحساب المؤشرات»؟

اقرأ الذاكرة عبر المؤشرات، وتنقّل في المصفوفات باستخدام حساب المؤشرات. تتمرن على C++ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C++ Academy؟

لا تُشترط خبرة سابقة. C++ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «إلغاء إشارة المؤشر وحساب المؤشرات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C++ Academy هذا؟

نعم. كل درس في C++ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. المؤشرات الخام ومعامل أخذ العنوان
  2. إلغاء إشارة المؤشر وحساب المؤشرات
  3. ‏nullptr وأمان المؤشرات الفارغة
  4. متى تستخدم المؤشرات مقابل المراجع
← العودة إلى C++ Academy