Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

المؤشرات الفارغة (Null Pointers)

جزء من قسم المنطق وتدفق التنفيذ في رحلة C++ على Coddy. الدرس 4 من 56.

عندما تعلن عن pointer، فإنه لا يشير تلقائيًا إلى أي شيء ذي معنى. يحتوي pointer غير المهيأ على عناوين ذاكرة عشوائية، مما قد يؤدي إلى أخطاء خطيرة إذا حاولت استخدامه. وهنا تصبح المؤشرات null ضرورية للبرمجة الآمنة.

إن null pointer هو pointer يشير صراحةً إلى لا شيء. في لغة C++ الحديثة، تنشئ null pointer بتهيئته باستخدام nullptr:

int* ptr = nullptr;  // ptr أصبح الآن مؤشرًا فارغًا

تشير الكلمة المفتاحية nullptr إلى أن pointer لا يشير إلى أي موقع ذاكرة valid. وهذا أكثر أمانًا بكثير من ترك pointer غير مُهيأ، لأنه يمكنك التحقق مما إذا كان pointer يساوي null قبل محاولة dereference له.

قبل استخدام أي pointer، يجب عليك التحقق من أنه ليس null باستخدام عبارة if بسيطة:

if (ptr != nullptr) {
    // من الآمن استخدام *ptr هنا
    int value = *ptr;
}

تمنع هذه الممارسة برنامجك من التعطل بسبب الوصول إلى مواقع ذاكرة غير صالحة. احرص دائمًا على تهيئة pointer إلى nullptr عند إعلانها، وتحقق من null قبل إجراء dereference.

challenge icon

التحدي

سهل

أنشئ برنامجًا يوضّح الاستخدام الآمن لـ pointer من خلال التحقق من وجود مؤشرات null قبل إلغاء الإشارة إليها.

سيتم توفير input التالي:

  • string ستكون إما "valid" أو "null"

يجب أن يقوم برنامجك بما يلي:

  1. Declare متغيرًا صحيحًا باسم data وتهيئته بالقيمة 42
  2. Declare pointer باسم ptr
  3. إذا كانت input هي "valid"، فقم بـ assign عنوان data إلى ptr
  4. إذا كانت input هي "null"، فقم بـ assign nullptr إلى ptr
  5. استخدم if-statement للتحقق من أن ptr ليست null قبل محاولة استخدامها
  6. إذا لم تكن pointer هي null، فاطبع القيمة التي تشير إليها
  7. إذا كانت pointer هي null، فاطبع رسالة أمان

استخدم تنسيق الإخراج الدقيق التالي:

Value: [value]

بالنسبة إلى مؤشرات null، استخدم هذا التنسيق:

Pointer is null - cannot dereference

جرّب بنفسك

#include <iostream>
#include <string>
using namespace std;

int main() {
    // اقرأ الإدخال
    string input;
    cin >> input;
    
    // أعلن عن متغير data
    int data = 42;
    
    // TODO: اكتب شفرتك هنا
    // - أعلن عن مؤشر باسم ptr
    // - تحقق من الإدخال وعيّن القيمة المناسبة إلى ptr
    // - استخدم if-statement للتحقق بأمان واستخدام المؤشر
    
    return 0;
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم C++ عبر الإنترنت